bzoj 1192

二进制拆分。

由2^0,2^1,2^2……可以组成小于等于这些二的倍数的和的所有数。

所以直接就水过了,不过我的代码写得比较差喽。

#include<cstdio>
int main(){
    int n,i=0;
    scanf("%d",&n);
    for(;(1<<i)<=n+1;i+=1); i--;
    if((1<<i)==n+1) printf("%d",i);
    else printf("%d",i+1);
    return 0;
}

 

posted @ 2017-10-22 20:27  或是七一  阅读(76)  评论(0编辑  收藏  举报