uva 12169 扩展Gcd
来源:互联网 发布:易语言安卓远控源码 编辑:程序博客网 时间:2024/05/18 23:58
题意:
给定公式xi=(xi-1*a+b)%10001
输入x1,x2,x3…..x2T-1,输出x2,x4,x6……x2T
思路:
枚举a[0,10000],通过扩展gcd计算出b
X2=(X1*a+b)%10001;
X3=(a*(X1*a+b)%10001+b)%10001;
X3=(a*(X1*a+b)+b)%10001;
X3+10001y=a*(X1*a+b)+b=X1*a*a+a*b+b
X3-X1*a*a=10001y-(1+a)b
代码:
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 1000;LL d,x,y;LL data[maxn];const int MOD = 10001;void gcd(LL a,LL b,LL& d,LL& x,LL& y){ if(!b) {d=a;x=1;y=0;} else {gcd(b,a%b,d,y,x);y-=x*(a/b);}}int main(){ int T; cin>>T; for(int i=1;i<=2*T;i+=2) { cin>>data[i]; } for(int a=0;a<=10000;a++) { LL t = data[3]-a*a*data[1]; gcd(MOD,a+1,d,x,y); if(t%d) continue; y=y/d*t; bool flag=1; for(int i=2;i<=2*T;i++) { LL tmp = (a*data[i-1]+y)%MOD; if(i&1) { if(data[i]!=tmp) { flag=0; break; } } else { data[i]=tmp; } } if(flag) {break;} } for(int i=2;i<=2*T;i+=2) cout<<data[i]<<endl; return 0;}
阅读全文
0 0
- uva 12169 扩展Gcd
- uva 10673 Play with Floor and Ceil(扩展gcd)
- 【扩展GCD】
- 扩展GCD
- 扩展GCD
- 扩展gcd
- 扩展gcd
- 扩展gcd
- GCD,快速GCD,扩展GCD
- gcd与扩展gcd
- gcd及扩展gcd
- gcd,扩展gcd
- GCD与扩展GCD
- GCD及其扩展GCD详解
- GCD及其扩展GCD详解
- GCD及其扩展GCD详解
- gcd以及扩展gcd详解
- UVA 11827 Maximum GCD gcd
- hibernate环境搭建与小案例
- 如何在Linux系统下查找可执行文件
- mybatis动态代理剖析
- JSP初步(一)
- 【CSS布局】三栏式布局,左右定宽,中间内容区域自适应
- uva 12169 扩展Gcd
- 算法竞赛入门经典java版程序ch3 UVa272
- 贪心详解
- ccf认证游戏
- 一劳永逸地搞定flex布局
- ajax 请求后台数据(及使用FormData对象提交表单及上传图片)
- 同余定理【数论】
- spring boot(16)-mail发邮件
- JQ综合练习(1)