Manthan, Codefest 18 A Packets(思维题)

链接:http://codeforces.com/problemset/problem/1037/A

问输入一个数n,最少可以用几个数来表示从1-n的所有数

1只能表示1,1,2可以组成1-2的数,而1+2=3,即1,2,4可以组成1-7的数,1,2,4,8又可以组成1-15的数,进而可以推出数组1,2,4,8,16,32,64...继而可以发现其规律

代码:

#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);cin.tie(0);
    int n, i, s = 0;
    cin>>n;
    for(int i=0;;i++)
    {
        s+=(1<<i);
        if(s>=n)
        {
            cout<<i+1;
            break;
        }
    }

}

 

posted @ 2018-09-03 19:10  Somnus、M  阅读(108)  评论(0编辑  收藏  举报