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内部的数哎哎哎不想了