近期都是这样的题呢。

。。。。

開始想纯暴力(体如今跳出循环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. 异常处理:1215 - Cannot add foreign key constraint

    最近在做新生入学系统,学生表中包括新生的班级,专业等信息,班级,专业就需要和班级表,专业表进行关联,但是在添加外键的过程中却出现了“Cannot add foreign key constraint” ...

  2. Windows进程间各种通信方式浅谈

    1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系 ...

  3. 0058 Spring MVC如何向视图传值--Model--ModelMap--ModelAndView--@ModelAttribute

    MVC,模型.视图.控制器,请求来了,控制器负责找到Controller进行一通计算,计算的结果放到模型里,再找视图把结果呈现出来. 请求里一般都包含了一些参数,前面说了,Spring MVC有很多种 ...

  4. .Net 三层架构开发初步

    写在前面的话:在课堂上只是听老师讲过三层架构,知道大概是什么意思,我的理解就是将本来混合着写在一起的代码按功能性的不同分别写在不同的项目中,然后上层项目调用下层项目提供的接口,这样可以使代码的层次更清 ...

  5. oracle相关链接

    shilei1的个人空间 http://blog.itpub.net/196700/

  6. PotPlayer 所有版本合集

    http://www.videohelp.com/software/PotPlayer/old-versions#download 1.6是更改图标前最后的大版本. 1.6最终版本 https://w ...

  7. LeetCode: Add Binary 解题报告

    Add BinaryGiven two binary strings, return their sum (also a binary string). For example,a = "1 ...

  8. sqlserver 若字段定义的类型为datetime

    sqlserver 若字段定义的类型为datetime,插入为''(空),那么会默认值为1900-01-01 00:00:00.000 解决 插入 NULL 或者程序判断

  9. 浅谈C#委托和事件【转】

    委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本 ...

  10. 【Visual Studio】控制台程序运行时一闪而过

    问题:写一个C#控制台程序,运行时控制台一闪而过.程序结束.无法看清控制台输出的结果. 办法: 方法一二三都有人写过百度经验了:怎么解决VS运行程序一闪而过 其实还有一种办法,就是把控制台程序改为Wi ...