您的位置:首页 > 其它

UVA-12169 - Disgruntled Judge(数学+枚举)

2014-08-12 10:39 267 查看
注意本题中的每个a、b值不一样,而a、b值是从0到10000的整数,所以枚举并判读是否符合即可,另外LRJ说能由a推出b而减少b的枚举,我没想出来,以下是AC代码:

#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int x[105];
int main()
{
    int t,aa,bb;cin>>t;
    for(int i = 0;i < t;i++)
        cin>>x[i];
    for(int a = 0;a <= 10000;a++)
        for(int b = 0;b <= 10000;b++)
        {
            int flag = 1;
            for(int c = 1;c < t;c++)
                if(x[c] != (((x[c - 1] * a + b)%10001) * a + b) % 10001) {flag = 0;break;}  //一开始这里没有进行剪枝,超时了
            if(flag) {aa = a;bb = b;goto loop;}
        }
    loop:
    for(int i = 0;i < t;i++)
        printf("%d\n",(aa*x[i] + bb)%10001);
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: