UVA12169 Disgruntled Judge题解

题目大意

给出x1,a,b,定义xi=(a*xi-1+b)%10001。给出t,x1,x3。。。x2t-1,输出x2,x4。。。x2t(t小于等于100,x小于10001)。

解析

若知a,b即可向下推xn,因为要%10001,所以a,b在0到10000之间,固枚举a,b。暴力硬解即可,时间大约是380ms。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int al[1001],t,b,j,x;
    memset(al,0,sizeof(al));
    scanf("%d",&t);
    for(int i=1;i<=t;i++)
        scanf("%d",&al[i*2-1]);
    for(int a=0;a<=10000;a++){
        for(int b=0;b<=10000;b++){
            x=1;
            for(j=2;j<=2*t;j++){
                if(j%2==1){
                    if(al[j]!=((a*al[j-1]+b)%10001)){
                        x=0;
                        break;
                    }
                }
                else al[j]=(a*al[j-1]+b)%10001;
            }
            if(x==1)
                break;
        }
        if(x==1)
            break;
    }
    for(int i=1;i<=t;i++)
        printf("%d\n",al[i*2]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/sjzezwzy/article/details/80208437