UVA 11384 Help is needed for Dexter

来源:互联网 发布:用dos命令调试java程序 编辑:程序博客网 时间:2024/06/16 22:53

手推了3 4 5 就可以总结出规律 每次 把后半部分 同时减 后半部分的第一个数 这样就可以跟前半部分相同了 就想1 2 3 4 5 6 →1 2 3 0 1 2 后面的1 2 跟前面1 2 的做同样的操作就可以了  也就相当于不存在了  所以 答案应该是在2的n次方的位置 增长 所以预先存一下 然后二分找就可以了

#include<iostream>#include<cstdio>#include<cstring>#include<cctype>#include<cmath>#include<vector>#include<queue>#include<map>#include<algorithm>#include<set>#define scnaf scanf#define cahr char#define bug puts("bugbugbug");using namespace std;typedef long long ll;const int mod=1000000007;const int maxn=2000+5;const int inf=1e9;const int maxe=200000;int n;int main(){    ll a[40]={0,1};    for(int i=2;i<35;i++)      a[i]=a[i-1]*2;    while(~scanf("%d",&n))        printf("%d\n",upper_bound(a,a+35,n)-a-1);    return 0;}


0 0
原创粉丝点击