码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 12169 Disgruntled Judge

时间:2018-03-05 22:22:26      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:amp   范围   不能   nbsp   log   利用   算法   long   gpo   

思路:枚举 a ,通过扩展欧几里得算法利用数列前两个值求 b ,排除非整数解的情况,判断该组 a,b 是否满足剩余序列,(注意必须判断整个序列,不能只判断前几个值,时间够用)。注意对于求出的 b 要模10001。(观察通解和b范围的关系)

 

 1 #include <cstdio>
 2 using namespace std;
 3 
 4 void exgcd(int a,int b,int & d,int & x,int & y){
 5     if (b==0) {x=1;y=0;d=a;return;}
 6     exgcd(b,a%b,d,y,x);
 7     y-=x*(a/b);
 8 }
 9 
10 int main(){
11     
12     int n,h[10005],a,d,b,l;
13     scanf("%d",&n);
14     for(int i=1;i<=n;i++)
15         scanf("%d",&h[i]);
16 
17     for(a=0;a<10001;a++){
18 
19         exgcd(a+1,10001,d,b,l);
20         long long c=h[2]-(long long)a*a*h[1];
21         b=(b*c/d)%10001;
22         if (c%d) continue;
23         int f=1;
24         for (int i=1;i<n;i++){
25             int temp=(((a*h[i]+b)%10001)*a+b)%10001;
26             if (temp!=h[i+1]){
27                 f=0;
28                 break;
29             }
30         }
31         if (f) {
32             for (int i=1;i<=n;i++)
33                 printf("%d\n",(a*h[i]+b)%10001);
34             return 0;
35         }
36     }
37 }

 

UVA 12169 Disgruntled Judge

标签:amp   范围   不能   nbsp   log   利用   算法   long   gpo   

原文地址:https://www.cnblogs.com/travelller/p/8511571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!