hdu1847Good Luck in CET-4 Everybody!(sg函数找规律)

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int sg[100000], vis[100000], f[100000], pos = 1;;
int main() {
    for(int i = 1; i < 2000; i *= 2) {
        f[pos++] = i;
    }
    for(int i = 1; i <= 1000; i++) {
        memset(vis, 0, sizeof vis);
        for(int j = 1; f[j] <= i; j++) {
            vis[sg[i - f[j]]] = 1; //标记当前点可以到达的点
        }
        int s;
        for(s = 0; s < 10000; s++)
            if(!vis[s])
                break;
        sg[i] = s;
    }
    for(int i = 0; i < 20; i++)
        cout << sg[i] << endl;
    return 0;
}

发现只有012输出,所以模3就可

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    while(cin >> n) {
        if(n % 3 == 1 || n % 3 == 2)
            cout << "Kiki" << endl;
        else
            cout << "Cici" << endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Endeavor_G/article/details/89765221