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 ...
随机推荐
- python中的else子句
在一般的语言中else子句一般是紧跟在if 子句后面,但是python语言中else子句可以不跟在if子句后面,请看下面代码: >>> for n in range(2, 10): ...
- Python的编码注释# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-的主要作用是指定文件编码为utf-8, 因为一般默认的是ASCII码,如果要在文件里面写中文,运行时会出现乱码,加上这句之后会把文件编码强制转换为utf-8 ...
- ios滚动UIScrollView的setContentOffset方法
在UIScrollView,setContentOffset方法的功能是跳转到你指定内容的坐标,[self.scroview setContentOffset:CGPointMake(0, 50) a ...
- [Java基础] Java多线程-工具篇-BlockingQueue
转载自: http://www.cnblogs.com/jackyuj/archive/2010/11/24/1886553.html 前言: 在新增的Concurrent包中,BlockingQue ...
- Admin Finder
#Created for coded32 and his teamopenfire Eliminated Some bugs from my last code shared here as Gues ...
- Flask+uwsgi+Nginx环境搭建
开源软件准备需要的软件列表:setuptools-33.1.1.zipPython-2.7.13.tgzpip-9.0.1.tar.gznginx-1.10.3.tar.gz软件统一上传到/usr/l ...
- IOS研究之多个UITextField的键盘处理
在IOS开发中使用UITextField时常须要考虑的问题就是键盘的处理. 有时候,弹出的键盘会将UITextField区域覆盖,影响用户输入.这个时候就要将视图上移.这个时候我们须要考虑两点: 1, ...
- 查看MySQL数据库大小
查看MySQL数据库大小 1.首先进入information_schema 数据库(存放了其他的数据库的信息) ? 1 2 mysql> use information_schema; Data ...
- Yii2 使用十二 配合ajaxFileUpload 上传文件
1.js $("input#upload").change(function () { $.ajaxFileUpload({ url: '/members/web-members- ...
- [转载]centos 6.4中git如何正常显示中文
FROM: http://ju.outofmemory.cn/entry/63250 系统版本:centos 6.4 git版本:1.7.1,使用yum直接安装的. 当使用git status查看时, ...