Blog 3:数论(取模)与递推相结合

本文探讨了Uva12169问题的一种高效解决方法,通过枚举和模运算找到满足条件的数列。对比了该方法与常规方法的不同,并详细解释了为何此题不能直接假设首个数为特定值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Uva 12169 Disgrunted Judge
递推矛盾问题的终极写法
BOLG2那个正常的写法超时了
那就找规律啊!!!!!
本题正常的枚举没事
思考:与上面一题中
为何上面一题可以直接假设第一个数为1
这个不可以
因为第一个题目中各个假设之间的各个数差一样,只需要求得一个
看下面这个题代码

#include<iostream>
#include<algorithm>
using namespace std;
int x[205];
int T;
void solve()
{
	for(int a=0;a<=10000;a++)
	{
		for(int b=0;b<=10000;b++)
		{
			bool ok=1;
			for(int i=1;i<=T;i++)
			{
			x[2*i]=(a*x[2*i-1]+b)%10001;
			if(x[2*i+1]!=(a*x[2*i]+b)%10001&&i<T)
			{ok=0;break;}	
			}
			if(ok)
			return ;//这种可以学习,各种枚举中一旦成功就结束所有其实就是用return代
			//替两个break,BLOG2上面那题用过了
		}
	}
	
}

int main()
{
cin>>T;
for(int i=1;i<=T;i++)
cin>>x[2*i-1];
solve();	
for(int i=1;i<=T;i++)
cout<<x[2*i]<<endl;	
return 0;
}

本题中如果只枚举这么一个数,即a=1,b=1;
或a=0,b=0;
这些数之间没啥关系,何况再加上了一个%
上题中有个重要条件确保关系,就是加减运算和排列数各不相同
故差值一样
这一道题恐怕就算不加%
我想想
a,b不同时的x之间有没有啥关系

x没限制且有a,b两个数
很难啊

若本题中限制了x为排列数
后x2=x1*a
此处可使a为1
找到最大值么
emmm
不行,此处给的是x内部的数哎哎哎不想了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值