zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 83 (Rated for Div. 2).C. Adding Powers

    http://codeforces.com/contest/1312/problem/C题目链接

    这道题有许多种解法,在此介绍一种类似题都能通用的方法。相信许多人也最想看这种方法。

    在介绍之前,先理解一下当k=2时的情况。

    k=2,n=23时   有23=2^4+2^2+2^1+2^0;

    这个式子能说明什么呢 在二进制中23表示为 10111

    看出来什么没有? 1的位置正好对应的是上面式子中指数的数字-1。(4,2,1,0)

    而如果每次对这个数%2,就能得到最后一个数是否为1,从而知道需不需要加上对应的幂。之后只需要右移一位,即除以2,就能继续剩余的判断。

    记录下每个指数使用的次数,超过1次便不合要求。从而就能解这道题。

    那么可以知道,当k>2的时候,其实也就是在k进制下进行类似操作。

    上代码:

    #include<bits/stdc++.h>
    using namespace std;
    long long a[105],c[105];
    int main()
    {
        int t;
        cin>>t;
        while(t)
        {
            t--;
            memset(c,0,sizeof(c));
            int n,k;
            cin>>n>>k;
            for(int i=0;i<n;i++)
            {
                cin>>a[i];
                int j=0;
                while(a[i])
                {
                    c[j]+=a[i]%k;
                    a[i]/=k;
                    j++;
                } 
            }int flag=0;
            for(int i=0;i<60;i++)
            {
                if(c[i]>1)
                flag=1;
            }
            if(flag==0)cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
     } 
    rush!
  • 相关阅读:
    4、自定义菜单
    3、关注、取消关注 与 关键字回复
    2、自动回复消息
    1、接入公众平台
    java学习备忘录
    vue组件最佳实践
    js拉起或下载app
    angular1.5 Components
    Charlse 使用小记
    2016年终总结
  • 原文地址:https://www.cnblogs.com/LH2000/p/12455934.html
Copyright © 2011-2022 走看看