• hdu 2891 中国剩余定理


    从6点看到10点,硬是没算出来,早知道玩游戏去了,艹,明天继续看

    不爽,起来再看,终于算是弄懂了,以后超过一个小时的题不会再看了,不是题目看不懂,是水平不够

     1 #include<cstdio>
     2 using namespace std;
     3 __int64 result,d;
     4 int flag;
     5 __int64 gcd(__int64 a,__int64 b,__int64 &x,__int64 &y)
     6 {
     7    __int64 t,ret;
     8    if(!b)
     9    {
    10      x = 1;
    11      y = 0;
    12      return a;
    13    }
    14    ret=gcd(b,a%b,x,y);
    15    t=x;
    16    x=y;
    17    y=t-a/b*y;
    18    return ret;
    19 }
    20 void fun(__int64 a,__int64 b,__int64 n)
    21 {
    22    __int64 x,y;
    23    d=gcd(a,n,x,y);
    24    if(b%d!=0)
    25     flag =1;
    26 result=(x*(b/d)%n+n)%n;
    27 }
    28 int main()
    29 {
    30 
    31     __int64 a1,m1,a2,m2,t;
    32     while(scanf("%I64d",&t)!=EOF)
    33     {
    34        scanf("%I64d %I64d",&m1,&a1);
    35        t--;
    36        flag=0;
    37        while(t--)
    38        {
    39         scanf("%I64d %I64d",&m2,&a2);
    40         fun(m1,a2-a1,m2);
    41         a1+=m1*result;
    42         m1=m1*m2/d;
    43         a1=(a1%m1+m1)%m1;
    44        }
    45        if(flag)
    46         printf("-1
    ");
    47        else
    48         printf("%I64d
    ",a1);
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    第一周作业
    第八周作业
    第七周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业(markdown版本)
    第一周作业
    第六次作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4263163.html
Copyright © 2020-2023  润新知