HDOJ5690 All X

晚上看到百度之星第二轮比赛的题目,好久没水题了,心血来潮水做一题吧。
太久没用C了,写起来感觉好陌生。
题目:All X

思路嘛就是取模找周期,才取模10000,最多循环10000次总会重复的,
但是要注意进入取模周期前可能会有段干扰数,这里是需要特殊处理的。

#include<stdio.h>
#include<string.h>
int main(){
    int cnt, N;
    int x ,m, k, c;
    int t[10001];
    scanf("%d", &N);
    for(int i=0; i<N; i++){
        printf("Case #%d:\n", i+1);
        scanf("%d%d%d%d", &x, &m, &k, &c);
        memset(t, -1, sizeof(t));
        int left = x % k;
        cnt = 0;
        while(t[left] == -1 && cnt < m){
            t[left] = ++cnt;
            left = (left*10+x) % k;
        }
        if(t[c] == -1){
            puts("No");
            continue;
        }
        if(cnt == m){
            if(t[c] == cnt){
                puts("Yes");
            }else{
                puts("No");
            }
            continue;
        }
        if(t[c]>=t[left] &&(m-t[c])%(cnt-t[left]+1) == 0){
                puts("Yes");
            }else{
                puts("No");
            }
    }
    return 0;
}
# 技巧 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×