首页 > 其他 > 详细

Educational Codeforces 83-C

时间:2020-03-15 10:56:37      阅读:76      评论:0      收藏:0      [点我收藏+]

    这一场比赛也是我第一次参加CF,有点欣喜。其实这场比赛前三题没有那么难,A,B我基本上上很快做出来了,看到C题就卡住了(倒不是我的思路不对,看到题最后的提示,很容易想到K进制),只是我的代码风格真的有待改善,直到今天改了改代码的结构才终于AC。(难受!!!)

    这是这道题的链接:https://codeforces.com/contest/1312/problem/C

代码如下:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
//其实这道题就是将给出的所有数进行K进制表示,求每位出现的次数总和,如果出现次数大于等于2,则不符合题意,输出YES,否则NO
ll a[50];
int b[100];
int main(){
    int t;
    cin>>t;
    int n,k;
    while(t--){
        memset(b,0,sizeof(b));
        cin>>n>>k;
        for (int i=1;i<=n;i++){
            cin>>a[i];
        }
        int f=0;
        for (int i=1;i<=n;i++){
            if(f==1){
                break;
            }
            else{
                if(a[i]==0){   //a[i]为0直接忽略
                continue;
                }
                else{
                ll c=a[i];
                ll p=1;
                int num=0;
                while(c!=0){
                    if(c%k<=1){
                        b[num++]+=c%k;
                    }
                    else{
                        f=1;
                        break;
                    }
                    if(b[num-1]>=2){
                        f=1;
                        break;
                    }
                    c/=k;
                    
                }
            }
        } 
        }
        if(f==0){
            cout<<"YES\n";
        }
        else{
            cout<<"NO\n";
        }
    }
    return 0;
}

Educational Codeforces 83-C

原文:https://www.cnblogs.com/youngbai/p/12496112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!