$ CF \ EDU \ 83 $

\(CF \ EDU \ 83 \)

\(C \)

問題の意味

長さが与えられた\(N- \)と初期値\(0 \)シーケンス\(V \)と長さを\(N- \)シーケンス\(A \)
所与\(K \) 各操作、または\(V [POS] \)増加する\(ステップk ^ {} \) または現在の操作がスキップされる(STEP \)\から\(0 \) 各ラウンドの終了カウントを開始\(ステップ\)増分。
あなたが作ることができます\(V \)となり\(A \)

問題の解決策

考えてみましょう(K \)\ Hexが解決しました。
それぞれのための\([I] \) これは\(K \)進表現のそれぞれの\(\用桁)でなければならない\(1 \) のすべての中\([I] \ )解体ビットのデジタル数が繰り返されてはなりません。

\(コード\)

int t, n, k;
int b[100];

bool check(LL x)
{
    int i = 0;//digit 编号
    while(x) {
        if(x % k == 1 && b[i]) return 0;
        if(x % k > 1) return 0;
        if(x % k == 1) b[i] = 1;
        x /= k;
        i++;
    }
    return 1;
}
int main()
{
    scanf("%d", &t);
    while(t--){
        memset(b, 0, sizeof(b));
        scanf("%d %d", &n, &k);
        int f = 0;
        LL x; 
        for(int i = 1; i <= n; ++i){
            scanf("%lld", &x);
            if(!check(x)) f = 1;
        }
        if(f) puts("NO");
        else puts("YES");
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/ChenyangXu/p/12453095.html