UVA 12169 Disgruntled Judge(Extended_Euclid)
用扩展欧几里德Extended_Euclid解线性模方程,思路在注释里面了。
注意数据范围不要爆int了。
/*********************************************************
* --------------Tyrannosaurus--------- *
* author AbyssalFish *
**********************************************************/
#include<bits/stdc++.h>
using namespace std; typedef long long ll; /*
取模可以说是个不定方程
如果x3 和 x1满足递推关系,则有
a^2*x1 + (a+1)*b = x3 mod m
(a+1)*b + m * k = x3 - a^2*x1 枚举a,则b和k未知, extended_Euclid
求出一组解 (a+1)*x0 + m*y0 = d
d = gcd(a+1, m)是最小正线性组合,(不包括0,0
对于其他任意的线性组合的和为c, 都是d的倍数,系数(x0 y0)* (c/d)
b在模m意义下唯一 O(T*m)
*/ int ex_euclid(int a, int b, int &x, int &y)
{
if(!b){
x = ; y = ;
return a;
}else {
int d = ex_euclid(b, a%b, y, x);
y -= a/b*x;
return d;
}
} const int mod = , maxn = ;
int dat[maxn];
int n; bool check(int a,int &b)
{
int x,y;
int d = ex_euclid(mod, a+, x, y);
int aa = a*a%mod, c = (dat[]-aa*dat[])%mod;
if( (c) % d) return false;
b = c/d*y % mod; //这里要按mod^3算,看见/d自动脑补成了mod^2...
c = (a+)*b%mod;
for(int i = ; i < n; i++){
if( (aa*dat[i-]+c - dat[i])%mod ) {
return false;
}
}
if(b < mod) b += mod;
return true;
} //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
scanf("%d", &n);
for(int i = ; i < n; i++) scanf("%d",dat+i);
int a, b;
for(a = ; a < mod; a++){
if(check(a,b)) {
for(int i = ; i < n; i++){
printf("%d\n", (a*dat[i]+b)%mod);
}
break;
}
}
return ;
}
UVA 12169 Disgruntled Judge(Extended_Euclid)的更多相关文章
- UVa 12169 - Disgruntled Judge(拓展欧几里德)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA.12169 Disgruntled Judge ( 拓展欧几里得 )
UVA.12169 Disgruntled Judge ( 拓展欧几里得 ) 题意分析 给出T个数字,x1,x3--x2T-1.并且我们知道这x1,x2,x3,x4--x2T之间满足xi = (a * ...
- UVA 12169 Disgruntled Judge 扩展欧几里得
/** 题目:UVA 12169 Disgruntled Judge 链接:https://vjudge.net/problem/UVA-12169 题意:原题 思路: a,b范围都在10000以内. ...
- UVA 12169 Disgruntled Judge【扩展欧几里德】
题意:随机选取x1,a,b,根据公式xi=(a*xi-1+b)%10001得到一个长度为2*n的序列,奇数项作为输入,求偶数项,若有多种,随机输出一组答案. 思路:a和b均未知,可以考虑枚举a和b,时 ...
- hdu 2769 uva 12169 Disgruntled Judge 拓展欧几里德
//数据是有多水 连 10^10的枚举都能过 关于拓展欧几里德:大概就是x1=y2,y1=x2-[a/b]y2,按这个规律递归到gcd(a,0)的形式,此时公因数为a,方程也变为a*x+0*y=gcd ...
- 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 12169 Disgruntled Judge
我该怎么说这道题呢...说简单其实也简单,就枚举模拟,开始卡了好久,今天看到这题没a又写了遍,看似会超时的代码交上去a了,果然实践是检验真理的唯一标准... #include <iostream ...
- UVa 12169 Disgruntled Judge 紫书
思路还是按照紫书,枚举a,得出b, 然后验证. 代码参考了LRJ的. #include <cstdio> #include <iostream> using namespace ...
- CJOJ 1071 【Uva】硬币问题(动态规划)
CJOJ 1071 [Uva]硬币问题(动态规划) Description 有n种硬币,面值分别为v1, v2, ..., vn,每种都有无限多.给定非负整数S,可以选用多少个硬币,使得面值之和恰好为 ...
随机推荐
- IDEA的git密码修改
问题: 如果你办公的电脑是同事用过,在每次提交git的时候都显示是他的名字.想要修改提交git用户名密码. 但是博客idea 修改Git密码和账号方法所示方法无效.且操作系统是win10.(其他操作系 ...
- Filter&Listener
Filter&Listener 内容待补充... ...
- tp5分页注意,分页生成的ul class是pagination,有些模板可能将pagination定义为display:none
今天在调用分页时总是无法显示,查看网页源代码是正常的,后来发现是在css文件里将pagination定义为display:none,所以无法显示
- STP-19-Port-Channel发现和配置
工程师在给一台交换机上的特定Port-Channel增加多个端口时,有一些配置参数必须相同,如下所示: 使用相同的速率和双工设置: 使用相同的操作模式(Trunk.Access.动态): 若不为T ...
- Sublime编写React必备插件
我终于看到了我要的攻略,sublime自带的format实在是不能看不能看不能看. 攻略地址:http://www.jianshu.com/p/ecf6c802fdc5?open_source=wei ...
- rsync简单总结
rsync是一个远程数据同步工具,算法是同步文件差异部分,因此针对非第一次同步传输速度快 (首次备份,没有复制优势)rsync作者:Andrew Tridgell 和 Paul Mackerras r ...
- Angular学习笔记【ngx-bootstrap】中的 tabset
<tabset class="tab-container tabbable-line"> <tab heading="{{l("MobileS ...
- C# String.Format方法
一.定义String.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项. 如: (1)string p1 = "Jackie";strin ...
- C# Thread类 线程优先级
1.C#对线程进行操作时,通过Thread类,可以对线程进行创建.挂起.恢复.休眠.终止及设置优先级. Thread类位于System.Threading命名空间下,该命名空间还包含一个ThreadP ...
- 框架使用-Sql拼接
Sql语句拼写: 查询 DQueryDom DmoQuery(返回的整个对象) 更新 DQUpdateDom 删除 DQDeleteDom 条件 dom.Where.Conditions.Add(D ...