• A.Who is better?(The Preliminary Contest for ICPC Asia Xuzhou 2019)


    https://nanti.jisuanke.com/t/41383

    解:

    斐波那契博弈+中国剩余定理。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 long long a[105],m[105],ans;
     4 long long exgcd(long long a,long long b,long long &x,long long &y){
     5     if (!b)
     6         {x=1,y=0;return a;}
     7     long long re=exgcd(b,a%b,x,y),tmp=x;
     8     x=y,y=tmp-(a/b)*y;
     9     return re;
    10 
    11 }
    12 long long gcd(long long x,long long y)
    13 {
    14           return y==0?x:gcd(y,x%y);
    15 }
    16 long long work1(int n){
    17           long long M=m[1];
    18           for(int i=2;i<=n;i++)
    19           {
    20                     M=M*m[i]/gcd(M,m[i]);
    21           }
    22           return M;
    23 }
    24 
    25 long long work2(int n){
    26     long long M=m[1],A=a[1],t,d,x,y;
    27     int i;
    28     for(i=2;i<=n;i++){
    29         d=exgcd(M,m[i],x,y);
    30         if ((a[i]-A)%d)
    31                 return -1;
    32         x*=(a[i]-A)/d,t=m[i]/d,x=(x%t+t)%t;
    33         A=M*x+A,M=M*m[i]/d;
    34     }
    35     return A;
    36 }
    37 long long fib[100];
    38 
    39 void sl(long long n)
    40 {
    41     int i;
    42     for(i=0;i<75;i++)
    43         if(fib[i]==n)
    44           break;
    45     if(i<75)
    46           printf("Lbnb!
    ");
    47     else
    48           printf("Zgxnb!
    ");
    49 }
    50 int main(){
    51     int k,ct=0;
    52     scanf("%d",&k);
    53     for(int i=1;i<=k;i++)
    54     {
    55               scanf("%lld%lld",m+i,a+i);
    56               if(a[i]==0)
    57                     ct++;
    58     }
    59     long long n;
    60     if(ct==k)
    61           n=work1(k);
    62     else
    63           n=work2(k);
    64 
    65     if(n==-1)
    66           printf("Tankernb!
    ");
    67     else
    68     {
    69           fib[0]=1;fib[1]=2;
    70           for(int i=2;i<75;i++)
    71           {
    72               fib[i]=fib[i-1]+fib[i-2];
    73              // printf("%d %lld
    ",i,fib[i]);
    74           }
    75           sl(n);
    76     }
    77     return 0;
    78 }
  • 相关阅读:
    uni_app 跳转到外部html5 的页面 (web-view) 的一些使用
    vue初学备份(动态切换class类)
    MySQL数据库基本操作
    蛋疼的JavaScript(二)this
    Java中的String,StringBuffer和StringBuilder
    LintCode_1 单例模式
    [转载]C语言EOF是什么?
    Python中的枚举
    对BOM的总结
    python类相关总结(持续更新)
  • 原文地址:https://www.cnblogs.com/--HPY-7m/p/11482381.html
Copyright © 2020-2023  润新知