UVA 12169 Disgruntled Judge 扩展欧几里得
/**
题目:UVA 12169 Disgruntled Judge
链接:https://vjudge.net/problem/UVA-12169
题意:原题
思路:
a,b范围都在10000以内。暴力枚举1e8;但是还要判断。所以时间不够。 如果可以枚举a,然后算出b,再判断可行性,那么时间上是可行的。但是是多次方的方程无法解。 想其他办法:
xi = (a*xi-1 + b) % 10001 xi+1 = (a*xi+b)%10001 xi+2 = (a*xi+1+b)%10001 => xi+2 = a*(a*xi+b)+b % 10001
= a*a*xi + (a+1)*b % 10001 xi+2 = a*a*xi + (a+1)*b - 10001*k ; 扩展欧几里得求解b。 (a+1)*b - 10001*k = xi+2 - a*a*xi; 因为mod=10001所以,求出任意一个解即可。 哪怕b是负数,+一个mod也是可以变成非负数的。 a*x + b*y = c; c%gcd(a,b)==0; a*1 + b*0 = a; */ #include <iostream>
#include <cstdio> using namespace std;
typedef long long ll;
const int maxn = 1e4+;
ll c[maxn];
int T;
const int mod = 1e4+;
void ext_gcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if(!b) {d = a; x = ; y = ;}
else{
ext_gcd(b,a%b,d,y,x); y = y-x*(a/b);
}
}
bool judge(ll a,ll b)
{
for(int i = ; i < T; i++){
ll t = (a*a*c[i-] + (a+)*b+mod) % mod;
if(t!=c[i]) return false;
}
return true;
}
int main()
{
//freopen("C:\\Users\\Administrator\\Desktop\\in.txt","r",stdin);
//freopen("C:\\Users\\Administrator\\Desktop\\out.txt","w",stdout);
while(scanf("%d",&T)==)
{
for(int i = ; i < T; i++){
scanf("%lld",&c[i]);
}
if(T==){
printf("0\n");
continue;
}
ll a, b, d, x, y;
for(int i = ; i < T; i++){
for(a = ; a < mod; a++){
ll temp = c[i]-a*a*c[i-];
ext_gcd(a+,mod,d,x,y);
b = x*(temp/d);
if(b<) b+= mod;
if(judge(a,b)){
break;
}
}
}
for(int i = ; i < T; i++){
printf("%lld\n",(a*c[i]+b+mod)%mod);
}
}
return ;
}
UVA 12169 Disgruntled Judge 扩展欧几里得的更多相关文章
- UVA.12169 Disgruntled Judge ( 拓展欧几里得 )
UVA.12169 Disgruntled Judge ( 拓展欧几里得 ) 题意分析 给出T个数字,x1,x3--x2T-1.并且我们知道这x1,x2,x3,x4--x2T之间满足xi = (a * ...
- UVA 12169 Disgruntled Judge 枚举+扩展欧几里得
题目大意:有3个整数 x[1], a, b 满足递推式x[i]=(a*x[i-1]+b)mod 10001.由这个递推式计算出了长度为2T的数列,现在要求输入x[1],x[3],......x[2T- ...
- UVA 10090 Marbles(扩展欧几里得)
Marbles Input: standard input Output: standard output I have some (say, n) marbles (small glass ball ...
- UVa 12169 Disgruntled Judge 紫书
思路还是按照紫书,枚举a,得出b, 然后验证. 代码参考了LRJ的. #include <cstdio> #include <iostream> using namespace ...
- UVA 12169 Disgruntled Judge【扩展欧几里德】
题意:随机选取x1,a,b,根据公式xi=(a*xi-1+b)%10001得到一个长度为2*n的序列,奇数项作为输入,求偶数项,若有多种,随机输出一组答案. 思路:a和b均未知,可以考虑枚举a和b,时 ...
- UVa 12169 - Disgruntled Judge(拓展欧几里德)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 12169 Disgruntled Judge(Extended_Euclid)
用扩展欧几里德Extended_Euclid解线性模方程,思路在注释里面了. 注意数据范围不要爆int了. /********************************************* ...
- UVA 12169 Disgruntled Judge
我该怎么说这道题呢...说简单其实也简单,就枚举模拟,开始卡了好久,今天看到这题没a又写了遍,看似会超时的代码交上去a了,果然实践是检验真理的唯一标准... #include <iostream ...
- hdu 2769 uva 12169 Disgruntled Judge 拓展欧几里德
//数据是有多水 连 10^10的枚举都能过 关于拓展欧几里德:大概就是x1=y2,y1=x2-[a/b]y2,按这个规律递归到gcd(a,0)的形式,此时公因数为a,方程也变为a*x+0*y=gcd ...
随机推荐
- 修复XCode7 Beta版无法使用iOS8.4真机调试的Bug
在XCode7 Beta2下如果使用iOS8.4版的真机进行调试,XCode会提示: "Could not find Developer Disk Image" 解 ...
- Intellij IDEA自动生成serialVersionUID
[Setting]->[Inspections]->[Serialization issues]->[Serializable class without ’serialVersio ...
- WebForm页面使用Ajax
AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML.指一种创建交互式网页应用的网页开发技术.AJAX并非缩写词,而是由Jesse ...
- C#基础之 派生类
1: 当创建派生类的实例时,会自动调用基类的默认构造函数 namespace parentTest { public class Reader { public Reader() { Console. ...
- WebLogic Cluster Sevlet的配置
虽然生产环境中不建议使用,但因为客户需要考试可能用到,所以又做了一遍 1. 配置受管Server,ProxyServer,过程略 2.构建Proxy Application 建立一个ProxyApp的 ...
- npm使用常见问题及注意事项
1.npm.cnpm.yarn不要混用,一个项目只使用一个 2.NPM problem: npm ERR! extraneous 表明安装了很多不需要的三方包 使用命令 npm prune删除无用的包 ...
- 1364:Field 'sex' doesn't have a default value [ SQL语句 ]
1364:Field 'sex' doesn't have a default value [ SQL语句 ] 错误解决方法: 关闭MySQL的strict mode的具体做法: 找到MySQL目 ...
- C#跨平台物联网通讯框架ServerSuperIO(SSIO)正式开源... 1
今天科技类最大的新闻,莫过于微软宣布.NET开发框架开源计划..NET 开源,集成 Clang 和 LLVM 而且自带 Android 模拟器,这意味着 Visual Studio 这个当下最好没有之 ...
- CentOS 7上安装Zabbix(高速安装监控工具Zabbix)
前提要求(optional) 安装Zabbix监控工具前,先安装必要的执行工具包 yum install gcc gcc-c++ make openssl-devel curl wget net-sn ...
- js canvas画柱状图 没什么高端的 就是一篇偶尔思路的
公司项目要用js画柱状图,本来想用个插件吧 chart.js 忽然一想 我们也用不了那么大的插件.自己写个吧,也能看看自己那点数学水平能够不! 有几个小亮点吧 1.函数x 和 函数y 对坐标进行了转化 ...