zoukankan      html  css  js  c++  java
  • 题解 CF261C Maxim and Matrix

    题目:CF261C Maxim and Matrix 

    先打个表发现是:1 2 2 4 2 4 4 8 4 8 8 16这种形式的。

    然后我们就知道这题就是求 n+1以内2的每一个次幂出现的次数. 

    这个有一个套路的数位dp板子去求它。直接放代码。

    对了最后要减去(now==1),第一个1 不能要。还有读入进来n++;

     1 #include<stdio.h>
     2 #define it register int
     3 #define il inline
     4 typedef long long ll;
     5 ll n,t,now,f[105];
     6 il void fr(ll &num){
     7     num=0;char c=getchar();int p=1;
     8     while(c<'0'||c>'9') c=='-'?p=-1,c=getchar():c=getchar();
     9     while(c>='0'&&c<='9') num=num*10+c-'0',c=getchar();
    10     num*=p;
    11 }    
    12 int main(){
    13     fr(n),fr(t);++n;
    14     if(t&(t-1)) return putchar('0'),0;
    15     for(it j=60;~j;--j){
    16         for(it i=60;i;--i) f[i]+=f[i-1];
    17         if(n>>j&1) ++f[now++];
    18     }
    19     ++f[now];
    20     now=0;while(t) t>>=1,++now;
    21     printf("%lld",f[now]-(now==1));
    22     return 0;
    23 }
    View Code
  • 相关阅读:
    2018CodeM复赛
    poj3683
    bzoj3991
    bzoj2809
    bzoj1001
    bzoj1412
    计蒜之道2018复赛
    HDU2255
    bzoj1010
    bzoj2006
  • 原文地址:https://www.cnblogs.com/Kylin-xy/p/11675288.html
Copyright © 2011-2022 走看看