UVA 239 - Tempus et mobilius. Time and motion

题目链接

题意:这题题意也是吊得飞起,看了老半天,大概是这样:

有一个放球的队列。和3个轨道(说白了就是栈),一个容纳5,1个12,1个12,每1分钟队列出一个小球。放入栈。假设放入5的满了。就把5的放回队列,头一个放入12的。假设12的满了,就把12的放回队列。头一个放入还有一个12的栈,假设又满了。就所有放回队列(头一个最后放回),问多少天之后。队列中小球会回复原来的状态

思路:先是模拟求出一天的情况。相应一个置换,然后就是求置换中循环的最大公倍数就可以了

代码:

#include <stdio.h>
#include <string.h>
#include <queue>
#include <stack>
using namespace std; const int N = 7005;
int n, next[N], vis[N]; long long gcd(long long a, long long b) {
if (!b) return a;
return gcd(b, a % b);
} long long lcm(long long a, long long b) {
return a / gcd(a, b) * b;
} int main() {
while (~scanf("%d", &n) && n) {
queue<int> Q;
stack<int> mins, fives, hours;
for (int i = 0; i < n; i++)
Q.push(i);
for (int t = 0; t < 1440; t++) {
int now = Q.front();
Q.pop();
if (mins.size() == 4) {
for (int i = 0; i < 4; i++) {
Q.push(mins.top());
mins.pop();
}
if (fives.size() == 11) {
for (int i = 0; i < 11; i++) {
Q.push(fives.top());
fives.pop();
}
if (hours.size() == 11) {
for (int i = 0; i < 11; i++) {
Q.push(hours.top());
hours.pop();
}
Q.push(now);
}
else hours.push(now);
}
else fives.push(now);
}
else mins.push(now);
}
for (int i = 0; i < n; i++) {
next[i] = Q.front();
Q.pop();
}
memset(vis, 0, sizeof(vis));
long long ans = 1;
for (int i = 0; i < n; i++) {
if (!vis[i]) {
long long cnt = 1;
vis[i] = 1;
int t = next[i];
while (!vis[t]) {
cnt++;
vis[t] = 1;
t = next[t];
}
ans = lcm(ans, cnt);
}
}
printf("%d balls cycle after %lld days.\n", n, ans);
}
return 0;
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

最新文章

  1. linux拷贝命令,移动命令
  2. 一步步学习javascript基础篇(0):开篇索引
  3. js事件委托
  4. 去哪儿网输入框三种输入方式(selenium webdriver 干货)
  5. 【2014-05-06】C++ 设计模式----单例模式
  6. 大话设计模式C++版——原则和引言
  7. 使用commons-fileupload包进行大文件上传注意事项
  8. python3 入门 (二) 列表的使用
  9. Bookmarklet
  10. 理解java Web项目中的路径问题
  11. show_space/get_alert_log/get_trace_file
  12. swift3 控件创建
  13. 判断iPhone/android手机
  14. Hive(笔记)
  15. C语言获取系统时间的函数
  16. vue cookie
  17. 【转】svn冲突问题详解 SVN版本冲突解决详解
  18. RabbitMQ详解(二)------消息通信的概念
  19. [代码]--c#实现屏幕取词源码下载
  20. apache配置一个域名读取多个路径代码(包括主干和分支)

热门文章

  1. Maven + Jetty + Jersey搭建RESTful服务
  2. 2012 PHP热门资料64个+经典源码50个——下载目录 :
  3. c++构造函数隐式转换--转换构造函数
  4. ASP.NET 成员资格 Part.2(使用安全控件 Login)
  5. Screwturn搭建企业内部wiki
  6. 使用zzip和minizip解压缩文件
  7. 集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery
  8. KVC该机制
  9. ubuntu10.10和windows双系统启动顺序的修改
  10. Python 清理HTML标签相似PHP的strip_tags函数功能(二)