UVA 12169 Disgruntled Judge (扩展欧几里得算法)

【数论】Disgruntled Judge, NWERC 2008, UVa12169 #include #define mod 10001 using namespace std; typedef long long LL; LL n,p[210]; void exgcd(LL a,LL b,LL& d,LL& x,LL& y){ if(!b) d=a,x=1,y=0; else exgcd(b,a%b,d,y,x),y-=x*(a/b); } int main() 阅读详情

UVA 12169 Disgruntled Judge (扩展欧几里得算法)

给出3个整数x1,a,b。根据递推公式xi=(a*xi-1+b) mod 10001来构造了长度为2T的数列。给出x1,x3,x5…x2T-1,求出x2,x4,x6…x2T.

根据题意,有:
x2=(ax1+b)%mod - - - 111
x3=(a
x2+b)%mod - - - 222

令n=mod
由111得x2和ax1+b同余,所以x2-(ax1+b)=ny1 - - -333
由222得x3和ax2+b同余,所以x3-(ax2+b)=ny2 - - -444
. . . . .
方法一:
由444-333得,ny+(a+1)x2=ax1+x3
通过枚举a的值,通过扩展欧几里得算法求出x2的值,然后再根据222式
x3=(ax2+b)%mod == ax2+b=k*mod+x3
求出b的值。

方法二:
由444+a×333得,ny+(a+1)b=x3-a2x1
通过枚举a的值,通过扩展欧几里得算法求出b的值
. . . . .
最后用O(T)的时间来计算序列,每计算出一个新式就进行校验,发现与原输入不符,则继续枚举a。

值得注意的是,用扩展欧几里得算法求出的x是方程ny+(a+1)x2=gcd(n,a+1)的解,需要通过再一次的变换来得到原方程的解。

在求出原方程的解后,通过解的线性变换 X=k*(n/gcd(n,a+1))+x2来得到处在[0,10000]区间内的解。

进行线性变换的方法可以通过取模进行。
X=(x%mod+mod)%mod,求得X属于[0,10000]

对于X=kmod+x 求X属于[0,mod]
X=x%mod 等价于 x=k
mod+X 等价于 X=kmod+x
由于x可能为负数,固等式变成
X=(x%mod+mod)%mod

对于第一种方法后来求出的b也要在进行计算序列之前通过
b=(b%n+n)%n的操作,将其变换到[0,10000]的同余类。
根据取模的性质,有xi=(axi-1+b)%n=(axi%n+b%n)%n不然可能会溢出。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int max_n=1e4+5;
int n;
int input_x[max_n];
int output_x[max_n];
int mod=10001;
typedef long long ll;
void gcd(int a,int b,int &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(void)
{
//	freopen("out.txt","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	scanf("%d",&input_x[i]);
	for(int a=0;a<=10000;a++)
	{
		ll y,x;
		ll b;
		int d;//d=gcd(mod,a+1) 
		ll c=input_x[2]-(ll)a*a*input_x[1];
		gcd(mod,a+1,d,y,b);
		if(c%d!=0)continue;
		b*=(c/d);
//		b=(b%mod+mod)%mod;
		bool flag=true;
		for(int i=1;i<=n;i++)
		{
			output_x[i]=(int)(((ll)a*input_x[i]+b)%mod);
			int temp=(int)(((ll)a*output_x[i]+b)%mod);
			if(i!=n&&temp!=input_x[i+1]){
				flag=false;break;
			}
		}
		if(!flag)continue;
		else{
			for(int i=1;i<=n;i++)
			printf("%d\n",output_x[i]);
			break;
		}
	}
// fclose(stdout);
 } 
//3
//17
//822
//3014
STM32F103C8T6通过ESP8266连接阿里云物联网平台(附代码) STM32F103C8T6连接阿里云物联网平台(1)—阿里云lot Studio控制 Web开发 分享一下自己使用stm32f103c8t6通过ESP_01模块连接阿里云物联网平台,实现温湿度上传和控制命令下达的过程,能力有限,用的是最简单的方法,如有错误,多多担待。 一、硬件选型 1、 stm32f103c8t6 2、ESP_01 wifi模块 3、其他 二、硬件连接 WSP_01 STM32F103C8T6 RXD PA2 TXD PA3 RES PA4 VCC 3.3 阅读详情

相关推荐

【张量分解(二)】CP分解

一、CP分解 1.1 定义 CP分解就是将一个张量分解成多个单秩张量的和。例如,给定一个三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,则CP分解可以写为 X≈∑r=1Rar∘br∘cr\mathcal{X}\approx\sum_{r=1}^{R}\textbf{a}_r\circ\textbf{b}_r\circ...

bqw的博客 2万+

OJ网站程序员必备

一. Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++、Pascal)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被Onl...

weixin_34209851的博客 930

硬件工程师进阶之路:从电路基础到PCB设计实战核心技能

硬件电路设计是一项融合电路理论、器件特性与工程实践的复合型技术。一块稳定可靠的电路板,不仅需要正确的原理图,更依赖于合理的叠层规划、元器件布局与布线策略。在高速数字电路日益普及的今天,信号完整性、电源完整性与电磁兼容性设计已成为决定产品成败的关键因素,工程师需要深入理解阻抗匹配、回流路径、去耦电容布置等技术原理,并将理论灵活应用于通信设备、消费电子、工业控制等各类产品研发场景。PCB设计正是连接电原理图与可量产产品之间的核心枢纽,也是硬件工程师能力进阶过程中的分水岭技能。掌握从基础电路分析到高速PCB设计,

weixin_29183637的博客 261

OpenJudge 程序设计与算法(一)心得

032:计算鞍点 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个5*5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。 鞍点指 的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8 )。 11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 2 15 ...

weixin_44605359的博客 1404

MTK 人工智能生态系统 <一> 简介

Neuropilot

New_Tank的博客 3494

银河麒麟V10ARM架构服务器离线安装docker\nacos【附安装包】

本文分享了在银河麒麟ARM64操作系统上安装Docker和Nacos的完整过程。首先提供了Docker的自动化安装脚本,包含服务配置、存储路径设置等关键步骤,并给出了常用维护命令。接着详细介绍了通过Docker-compose部署Nacos的方法,包括镜像导入、配置文件修改、鉴权设置等注意事项,特别强调了密钥长度必须超过32个字符的要求。文章还提供了Nacos初次登录的注意事项,并预告了后续可能推出的Redis、Nginx等安装教程。所有配置文件和脚本均可直接下载使用,适合内网环境下国产操作系统的部署

weixin_39054697的博客 2344

九度 Online Judge 算法 刷题 题目1098:字母统计

题目1098:字母统计题目描述: 输入一行字符串,计算其中A-Z大写字母出现的次数 输入: 案例可能有多组,每个案例输入为一行字符串。 输出: 对每个案例按A-Z的顺序输出其中大写字母出现的次数。 样例输入: DFJEIWFNQLEF0395823048+_+JDLSFJDLSJFKK 样例输出: A:0 B:0 C:0 D:3 E:2 F:5 G:0 H:0 I:

手把手教你学安卓 1322

刷机维修进阶教程-----oppo机型 一加 7pro 修复基带 更改参数 实例详细步骤解析

通过课程基本可以了解 1-----oppo机型与一加7机型更改参数的具体步骤解析 2------了解oppo机型开启diag端口的具体步骤 3-----了解一加7这些机型改参数常识 。可以借鉴参考用于其他机型 4-----了解手机基带分区与基带辅助分区的作用 5-----机型参数能读取到 但不能写这种情况如何操作

小马哥的专栏 1478

hdoj3782XXX定律

xxx定律Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 359    Accepted Submission(s): 258Problem Description对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。请计算需要经过几步才能将n变到1,具体可见样例。  Input测试包含多个用例,

独行闹市无人问,青灯剑影响素琴 763

46、聚类算法在智能交通数据分析中的应用

本文探讨了聚类算法在智能交通数据分析中的应用,介绍了K-均值算法、K-中心点算法和基于模型的聚类算法的基本原理及特点,并结合实际交通数据讨论了其应用场景与挑战。通过聚类分析,能够从海量交通数据中发现隐藏模式,为交通管理和规划提供科学依据。文章还展示了具体的案例分析和实现流程,为未来智能交通系统的发展提供了参考。

zz67890的博客 133

传感器校准与标定:传感器的灵敏度校准_(11).常见传感器的灵敏度校准方法

线性校准:适用于传感器输出与输入之间存在线性关系的情况。通过收集数据并使用最小二乘法拟合线性方程,可以确定斜率和截距,从而实现校准。非线性校准:适用于传感器输出与输入之间存在非线性关系的情况。通过收集数据并使用非线性拟合方法(如最小二乘法),可以确定多项式或其他非线性方程的参数,从而实现校准。温度补偿校准:适用于传感器在不同温度下输出特性变化的情况。通过收集不同温度下的数据并使用温度补偿方程,可以提高传感器在不同温度下的测量精度。其他校准方法。

2401_87715305的博客 915

UVA 10090 Marbles(扩展欧几里得)

Marbles Input: standard input Output: standard output I have some (say, n) marbles (small glass balls) and I am going to buy some boxes to store them. The boxes are of two types: Type 1: each

LYHVOYAGE的专栏 2236

matlab 点云可视化(1)——pcshow()函数可视化单个点云

matlab可视化单个点云常用方法汇总。

点云侠的博客 5359

Disgruntled Judge UVA - 12169 不爽的裁判 扩展欧几里得算法

题目链接        有个裁判出的题太难,总是没人做,所以他很不爽。有一次他终于忍不住了,心想:“反正我的题没人做,我干嘛要费那么多心思出题?不如就输入一个随机数,输出一个随机数吧。”        于是他找了3个整数x1、a和b,然后按照递推公式xi=(axi-1+b) mod 10001计算出了一个长度为2T的数列,其中T是测试数据的组数。然后,他把T和x1, x3,…, x2T-1写到...

Nicolas的博客 667

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Uva 12169 Disgruntled Judge(扩展欧几里得算法)

题目大意:给出数列的通项公式xi=(axi-1+b)mod 10001,给出T个整数,是这个数列的奇数项,求偶数项。 题目链接:https://vjudge.net/problem/UVA-12169 题目思路:已知x1,则x2=(x1a+b)%10001,将这个式子代入x3, x3=(a*(x1a+b)+b)%10001,即x3+10001k=aax1+(a+1)b, 将已知项全部移到等式左边x...

一只谜谜怪的博客 203

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

UVa 12169 Disgruntled Judge(扩展欧几里得算法的应用)

12169 - Disgruntled Judge Time limit: 3.000 seconds        Once upon a time, there was an NWERC judge with a tendency to create slightly too hard problems. As a result, his problems were nev

锦瑟年华,逐梦之人 474

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

UVA - 12169 Disgruntled Judge

题意: 找3个整数x1,a,b;然后按照递推公式xi=(axi−1+b)mod10001xi=(axi−1+b)mod10001x_i=(a x_{i-1}+b )mod 10001计算出一个长度为2T的序列,其中T为测试数据的组数。然后把奇数项当做输入,偶数项当做输出。 /*UVa12169 - Disgruntled Judge --a,b都在10000以内,这样可以枚举a的值,然后根...

Bryce1010's Blog 650

Disgruntled Judge UVA - 12169

Disgruntled Judge UVA - 12169 题意:给定2*T大小的数组,给定奇数项,符合关系x[i] = (a · x[i−1] + b) mod 10001.求各个偶数项。 题解:范围10000,可以通过暴力求解过,但是时间复杂度太高,根据公式可以采用拓展欧几里得求解。    可以得到 x2 = (a * x1 + b) % 10001; x3 = (a

sortmin的博客 214

Uva12169-Disgruntled Judge

题目链接 Uva-12169-Disgruntled Judge 题意 给出一个序列的一半,x1,x3,x5,x7,…x(2*t-1),序列的长度为2 * t。这个序列是通过x[i] = (x[i-1] * a + b) % mod (mod == 10001) 生成的。要求让你输出x2,x4,x6….,x(2 * t) 其中t 题解 根据紫书的思路 由于a,b都是

Uniontake 598

UVa 12169 Disgruntled Judge

exgcd

我要吃熊猫 464

【UVA】12169-Disgruntled Judge(暴力or欧几里得)

可能由于后台数据的原因,这道题直接暴力枚举a,b进行判断也能过,不过跑的时间长,效率太差了。 14021006 12169 Disgruntled Judge Accepted C++ 0.876 2014-08-11 08:46:28 不说了,比较无脑。 #include #include #include #incl

花月阁 3943

Disgruntled Judge UVA - 12169(扩展欧几里德+暴力)

题目链接: https://vjudge.net/problem/UVA-12169 题意: 有3个整数 x[i], a, b 满足递推式x[i]=(a*x[i-1]+b)mod 10001。由这个递推式计算出了长度为2T的数列,现在要求输入x[1],x[3],......x[2T-1], 输出x[2],x[4]......x[2T]. T&lt;=100,0&lt;=x&lt;=10000...

ltrbless的博客 269

UVA 12169 Disgruntled Judge

思路:枚举 a ,通过扩展欧几里得算法利用数列前两个值求 b ,排除非整数解的情况,判断该组 a,b 是否满足剩余序列,(注意必须判断整个序列,不能只判断前几个值,时间够用)。 关于数据范围的第一个问题:b 的范围是 [0,10000] 。由通解公式可知b’=b+10001*t(t 为任意整数),只要通解中的一个解满足序列递推公式,则剩余解都满足。可以简单对其模10001(如第21行,...

145

【NWERC2008】uva12169 Disgruntled Judge

枚举+扩展欧几里得

YHaX的博客 593

UVA 12169 - Disgruntled Judge(扩展欧几里得,等式求解)

这个题在求a,b的时候。 需要两个等式。 写出 x3 x2 的关系式  和 x

Shimmer_的专栏 838

UVa12169 Disgruntled Judge

x2 = (a * x1 + b) % 10001;x3= (a * x2 + b) % 10001; ∴x3 = (a * (a * x1 + b) % 10001 + b ) % 10001; ∴(a + 1) * b + 10001 * (-k) =x3 - a * a * x1 由于a的范围是1~10000,所以可以枚举a,解出b,暴力判断这组a和b能否适...

dezhen7015的博客 141
上一篇: UVA 11582 Colossal Fibonacci Numbers(数论)
下一篇: UVA 12716 GCD XOR(数论)
WedsonLin
博客等级 码龄7年 1粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值