$CF EDU 83$

Posted chenyangxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了$CF EDU 83$相关的知识,希望对你有一定的参考价值。

(CF EDU 83)

(C)

题意

给定一个长为 (n) 且初始值为 (0) 的序列 (v) 和一个长度为 (n) 的序列 (a)
给定 (k) ,每次操作,要么将一个 (v[pos]) 增大 (k^{step}),要么跳过当前操作, (step)(0) 开始计数,每一回合结束 (step) 自增。
是否可以使得 (v) 变成 (a)

题解

考虑转化为 (k) 进制求解。
对于每一个 (a[i]) ,其 (k) 进制表示下的每一个 (digit) 必须为 (1) ,同时,将所有的 (a[i]) 拆位,数位编号必须没有重复。

(code)

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;
}

以上是关于$CF EDU 83$的主要内容,如果未能解决你的问题,请参考以下文章

cf edu 133 D

向代码致敬,寻找你的第83行

CF-Educational Codeforces Round 83-D-Count the Arrays

CF Edu Round 71

CF edu #85

日记12.27/题解CF Edu79