两只鼹鼠

原创 2016年05月31日 18:49:14
总时间限制: 
1000ms 
内存限制: 
65536kB
描述

一个圆形花圃被分为k个扇形区域(0,1,…,k-1)。有两只小鼹鼠AB分别位于其中的两个区域。鼹鼠从一个扇形区域移动到相邻的区域需要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”。
样例输入
7
1 5
3 5
1 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;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

欧几里得算法初步 & NOI Openjudge 4975 两只鼹鼠

NOI Openjudge 4975 两只鼹鼠
  • Kanosword
  • Kanosword
  • 2016年10月28日 13:33
  • 679

宁波工程学院[1409] 鼹鼠鼹鼠你不出来 大数处理 模拟 很好的题

时间限制: 1000 ms 内存限制: 65535 K 问题描述 一只鼹鼠想要探索北方的一块草地,这块草地是一个无限大的方格矩阵,由于地鼠只会往前不会后退,所以他只会朝北或者东、西方向刨。由于刨过的...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2013年04月25日 09:48
  • 1063

[tyvj1432] 楼兰图腾(线段树)

传送门http://begin.lydsy.com/JudgeOnline/problem.php?id=2895 题意(题目有点乱): 在完成了打鼹鼠之后,西部314来到了楼兰古...
  • rachelsg
  • rachelsg
  • 2016年07月24日 17:16
  • 764

【USACO2.4.1】两只塔姆沃斯牛 模拟

纯粹的按照题目意思的模拟, 小技巧: const int dx[4] = {-1, 0, 1, 0}; const int dy[4] = {0, 1, 0, -1}; 定义方向变动数组。   ...
  • baidu_23081367
  • baidu_23081367
  • 2015年02月17日 13:25
  • 490

题解: poj 1061 nefu 84(拓展欧几里得)

POJ1061 Language:Default青蛙的约会 Time Limit: 1000MSMemory Limit: 10000KTotal Submissions: 105002Accepte...
  • sun897949163
  • sun897949163
  • 2016年07月13日 08:12
  • 2419

BZOJ系列1207《[HNOI2004]打鼹鼠》题解

Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在某一个网格...
  • Dante__Alighieri
  • Dante__Alighieri
  • 2015年03月08日 17:41
  • 475

Codevs 打鼹鼠

题目描述 Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的。根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n的网格中,在某些时刻鼹鼠会在...
  • LOI__DiJiang
  • LOI__DiJiang
  • 2016年10月14日 17:24
  • 176

BZOJ1207 打鼹鼠

最长上升子序列 dp
  • Gvolv
  • Gvolv
  • 2015年10月18日 15:11
  • 439

NOJ [1409] 鼹鼠鼹鼠你不出来,noj

问题描述 一只鼹鼠想要探索北方的一块草地,这块草地是一个无限大的方格矩阵,由于地鼠只会往前不会后退,所以他只会朝北或者东、西方向刨。由于刨过的地方已不是土地,所以不会再次进入这个方格。现在这只鼹...
  • u014389688
  • u014389688
  • 2014年05月09日 22:07
  • 383

hlg2144两只猴子【dp】

两只猴子 Time Limit: 1500 MS Memory Limit: 32768 K Total Submit: 2(2 users) ...
  • zhanzhaozhangxiaoyi
  • zhanzhaozhangxiaoyi
  • 2015年04月25日 18:07
  • 158
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:两只鼹鼠
举报原因:
原因补充:

(最多只允许输入30个字)