两只鼹鼠
来源:互联网 发布:2017全明星赛 数据 编辑:程序博客网 时间:2024/04/29 22:31
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
一个圆形花圃被分为k个扇形区域(0,1,…,k-1)。有两只小鼹鼠A,B分别位于其中的两个区域。鼹鼠从一个扇形区域移动到相邻的区域需要1分钟。已知A鼹鼠总是沿顺时针方向移动(序号增大),B鼹鼠总是沿逆时针方向移动(序号减小),两只鼹鼠都是每隔一段时间钻出地面一次。请你求出两只鼹鼠第一次同时在同一个扇形区域钻出地面的时间。如果永远遇不到,则输出“no answer”。
- 输入
- 第一行为一个整数k,表示扇形区域的个数。1 <= k< = 10000
第二行为两个整数la,lb分别表示两只鼹鼠初始时所处的位置。0 <= la, lb < k。
第三行为两个整数ia,ib分别为两只鼹鼠钻出地面的间隔时间。0 < ia, ib < 100。
第四行为两个整数fa,fb分别为两只鼹鼠第一次钻出地面的时间。0 <= fa < ia, 0 <= fb < ib。 - 输出
- 用一个整数表示两只鼹鼠第一次同时在同一个扇形区域钻出地面的时间。
若两只鼹鼠永远无法相遇,输出“no answer”。 - 样例输入
71 53 51 2
- 样例输出
37
先找出他们碰头的时间,然后去询问这段时间他们是否同时出头
#include <iostream>#include <cstring>using namespace std;int n;int la,lb;int ia,ib;int fa,fb;int a[10000];int judge(){ int lq, xq; if(n%2==0) { lq=(lb-la+n)%n; if(lq%2!=0)return -1; lq=lq/2; xq=n/2; } else { lq=(lb-la+n)%n; if(lq%2==0)lq=lq/2; else lq=(lq+n)/2; xq=n; } // cout<<lq<<" "<<xq<<endl; int sum=0; while(1) { int t1=(lq-fa)%ia; int t2=(lq-fb)%ib; // cout<<lq<<"--"<<t1<<" "<<t2<<endl; if(t1==t2&&t1==0) return lq; lq+=xq; // cout<<a[t1]<<endl; if(a[t1]==t2)return -1; a[t1]=t2; sum++; if(sum>900000)return -1; }}int main(){ cin>>n; cin>>la>>lb; cin>>ia>>ib; cin>>fa>>fb; for(int i=0;i<n;i++) a[i]=-1; int s=judge(); if(s>=0) cout<<s<<endl; else cout<<"no answer"<<endl; return 0;}
0 0
- 两只鼹鼠
- 欧几里得算法初步 & NOI Openjudge 4975 两只鼹鼠
- 一只,两只!
- 两只蝴蝶(歌词)
- 两只老鼠
- 两只蝴蝶
- 两只蝴蝶
- 两只蝴蝶
- 两只蝴蝶
- 两只巨无霸
- 两只毛毛虫
- 两只麻袋
- 两只屎壳郎
- 两只小鸟
- 两只母鸡
- 两只老虎
- 打鼹鼠
- 鼹鼠报数
- outputdebugstring 调试程序 同时也可以输出调试日志文件
- Unix 命令行参数语法规范标准
- RK3288 Android4.4 获取 root权限
- 【BZOJ1710】[Usaco2007 Open]Cheappal 廉价回文【区间DP】
- 简单的网站项目开发流程 .
- 两只鼹鼠
- 英语 -AJ
- suse 安装cloud-init
- Oracle存储过程基本语法介绍
- 求教 INSERT INTO SELECT FROM 这语句怎么用具体的实例 谢谢了
- 关于android自定义键盘
- linux常用的配置文件, 通过软链接建立与系统配置文件的联系(vim等)
- AsyncTask和Handler两种异步方式的实现和区别比较
- kafka connector