近期都是这样的题呢。

。

。。。。

哎

開始想纯暴力(体如今跳出循环t>=那里。,,,)。。,。随着数据变大。。

。。。(t=499981500166是能够的),,,。。,,23333333

超时代码:

#include <iostream>

#include<bits/stdc++.h>

using namespace std;

int main()

{

    long long int mod;

    scanf("%lld",&mod);

    long long int yuanshi1,mubiao1;

    scanf("%lld%lld",&yuanshi1,&mubiao1);

    long long int x1,y1;

    scanf("%lld%lld",&x1,&y1);

    long long int yuanshi2,mubiao2;

    scanf("%lld%lld",&yuanshi2,&mubiao2);

    long long int x2,y2;

    scanf("%lld%lld",&x2,&y2);

    long long int t=0;

    while(yuanshi1!=mubiao1||yuanshi2!=mubiao2)

    {

        yuanshi1=(x1*yuanshi1+y1)%mod;

        yuanshi2=(x2*yuanshi2+y2)%mod;

        t++;

        if(t>=50000000000)

        {

            printf("-1\n");

            return 0;

        }

    }

    printf("%lld\n",t);

    return 0;

}

非常质朴啊。。。。

。

。

此题最深刻的教训是。

。。。以后别对变量瞎起名字!

!!

!

!!

#include <iostream>

#include<bits/stdc++.h>

using namespace std;

int main()

{

    long long int mod;

    scanf("%lld",&mod);

    long long int yuanshi1,mubiao1;

    scanf("%lld%lld",&yuanshi1,&mubiao1);

    long long int x1,y1;

    scanf("%lld%lld",&x1,&y1);

    long long int yuanshi2,mubiao2;

    scanf("%lld%lld",&yuanshi2,&mubiao2);

    long long int x2,y2;

    scanf("%lld%lld",&x2,&y2);

    long long int k1=0,k2=0;

    while(yuanshi1!=mubiao1&&k1<mod)  //先算第一个满足的情况

    {

        yuanshi1=(x1*yuanshi1+y1)%mod;

        yuanshi2=(x2*yuanshi2+y2)%mod;

        k1++;

    }

    if(yuanshi1==mubiao1&&yuanshi2==mubiao2)    //同一时候第二个也满足了

    {

        printf("%lld\n",k1);

        return 0;

    }

    if(yuanshi1!=mubiao1)        //假设跳出是由于大于了MOD那就没招了(题里给的!

)

    {

        printf("-1\n");

        return 0;

    }

    long long int c=1;

    yuanshi1=(yuanshi1*x1+y1)%mod;

    long long int x=x2,y=y2;

        while(yuanshi1!=mubiao1&&c<=mod)    //找两个循环的最小公倍数。。。。

。。

        {

            yuanshi1=(yuanshi1*x1+y1)%mod;

            x=(x*x2)%mod;

            y=(x2*y+y2)%mod;

            c++;

        }

        if(yuanshi1!=mubiao1)

        {

            printf("-1\n");

            return 0;

        }

        while(yuanshi2!=mubiao2&&k2<=mod){

            yuanshi2=(yuanshi2*x+y)%mod;

            k2++;

        }

        if(yuanshi2!=mubiao2){

            printf("-1\n");

            return 0;

        }

        printf("%lld\n",k2*c+k1);

    return 0;

}

还可以用拓展欧几里得。。

。。。

。

假设这个线性方程有解,那么一定有gcd(a,b) | m。即a。b的最大公约数可以整除m(m%gcd(a,b)==0)。



codeforces 547A Mike and Frog的更多相关文章

  1. Codeforces Round #305 (Div. 1) A. Mike and Frog 暴力

     A. Mike and Frog Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/547/pr ...

  2. 数论/暴力 Codeforces Round #305 (Div. 2) C. Mike and Frog

    题目传送门 /* 数论/暴力:找出第一次到a1,a2的次数,再找到完整周期p1,p2,然后以2*m为范围 t1,t2为各自起点开始“赛跑”,谁落后谁加一个周期,等到t1 == t2结束 详细解释:ht ...

  3. CF #305 (Div. 2) C. Mike and Frog(扩展欧几里得&&当然暴力is also no problem)

    C. Mike and Frog time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  4. hdu4135-Co-prime & Codeforces 547C Mike and Foam (容斥原理)

    hdu4135 求[L,R]范围内与N互质的数的个数. 分别求[1,L]和[1,R]和n互质的个数,求差. 利用容斥原理求解. 二进制枚举每一种质数的组合,奇加偶减. #include <bit ...

  5. codeforces 547E Mike and Friends

    codeforces 547E Mike and Friends 题意 题解 代码 #include<bits/stdc++.h> using namespace std; #define ...

  6. codeforces 689 Mike and Shortcuts(最短路)

    codeforces 689 Mike and Shortcuts(最短路) 原题 任意两点的距离是序号差,那么相邻点之间建边即可,同时加上题目提供的边 跑一遍dijkstra可得1点到每个点的最短路 ...

  7. codeforces #305 A Mike and Frog

    挺简单的题目,但是有一堆恶心的边界 在刨去恶心的边界之后: 假定我们知道两边的循环节为b1,b2 其中h第一次到达目标的时间为a1,a2 又知道对于答案t t=a1+b1*t1=a2+b2*t2 不妨 ...

  8. Codeforces 548B Mike and Fun

    传送门 B. Mike and Fun time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. Codeforces 798D Mike and distribution - 贪心

    Mike has always been thinking about the harshness of social inequality. He's so obsessed with it tha ...

随机推荐

  1. UML笔记1

    UML包括 事物 结构:类,接口等等 行为:交互,状态改变等 分组:包,子系统等 注释 关系 依赖,关联(聚合,组合),泛化,实现 图 用例图,交互图(顺序图,协作图),类图,活动图,状态图等 扩展机 ...

  2. asp.net updatepanel 导致JS不能加载,而无法使用

    asp.net updatepanel 局部刷新,导致JS不能加载,而无法使用,而且 updatepanel会刷两次,郁闷的. 解决方法如下: <script type="text/j ...

  3. C语言 · 求指数

    算法训练 5-2求指数   时间限制:1.0s   内存限制:256.0MB      问题描述 已知n和m,打印n^1,n^2,...,n^m.要求用静态变量实现.n^m表示n的m次方.已知n和m, ...

  4. 利用JDK动态代理机制实现简单拦截器

    利用JDK动态代理机制实现简单的多层拦截器 首先JDK动态代理是基于接口实现的,所以我们先定义一个接口 public interface Executer { public Object execut ...

  5. JavaScrip——练习(做悬浮框进一步:悬浮窗后缀悬浮窗【感觉这种方法比较麻烦】)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Hive UDF IP解析(二):使用geoip2数据库自定义UDF

    开发中经常会碰到将IP转为地域的问题,所以以下记录Hive中自定义UDF来解析IP. 使用到的地域库位maxmind公司的geoIP2数据库,分为免费版GeoLite2-City.mmdb和收费版Ge ...

  7. JVM 详谈

    JVM 详谈 本来这次应该讲讲ORM 的几个框架,但是笔者还没有完全总结出来,所以这里先插入一次学习JVM的心得.作为一个Java程序员,如果不了解JVM的工作原理,就很难从底层去把 握Java语言和 ...

  8. java分布式集群

    http://blog.csdn.net/guzicheng/article/details/11580841

  9. 【转】nginx中proxy_set_header Host $host的作用

    nginx为了实现反向代理的需求而增加了一个ngx_http_proxy_module模块.其中proxy_set_header指令就是该模块需要读取的配置文件.在这里,所有设置的值的含义和http请 ...

  10. 关于Unity中的光照(一)

    一.光源定义 光源,是一个普通节点加一个Light组件,创建的时候可以直接创建光源节点,也可以先创建一个空节点,再添加Light组件实例. 二.颜色形成 看到的物体颜色受两个很重要的因素的影响,一个是 ...