hdu 4588 Count The Carries 南京邀请赛
来源:互联网 发布:模拟城市我是市长知乎 编辑:程序博客网 时间:2024/05/17 06:11
题目意思:求a~b 之间数二进制的和 求 进了多少位。
比如 1~3 01+10+11=22 22->30->110 进了 2位
要寻找规律,发现 加到3的时候为22 加到7的时候为444 猜测下 加到15的时候为8888这样就找到规律了 2^p-1
之后 只要whlle一下就好了
还有本题用long long的话 会答案错误,用_int64会正确。
#include <iostream>#include <cstdio>#include<cstring>#include<algorithm>using namespace std;__int64 ans[1000];__int64 int anum[1000];__int64 int bnum[1000];void cal(__int64 x,__int64 a[]){ int p=30,i; while(x>0){ while(x<((1<<p)-1)) p--; for(i=0;i<p;i++) a[i]+=1<<(p-1); a[p]+=x+1-(1<<p); x-=1<<p; }}int main(){ __int64 a,b; while(scanf("%I64d%I64d",&a,&b)!=EOF){ int i; memset(ans,0,sizeof(ans)); memset(anum,0,sizeof(anum)); memset(bnum,0,sizeof(bnum)); cal(a-1,anum); cal(b,bnum); for(i=0;i<=50;i++) ans[i]=bnum[i]-anum[i]; __int64 anstime=0; for(i=0;i<=50;i++){ anstime+=ans[i]>>1; ans[i+1]+=ans[i]>>1; } printf("%I64d\n",anstime); }}
- hdu 4588 Count The Carries 南京邀请赛
- HDU 4588 Count The Carries (2013年南京邀请赛)
- 2013 南京邀请赛 C - Count The Carries
- 2013南京邀请赛C题/njustOJ 1739 - Count The Carries
- 2013南京邀请赛C题/njustOJ 1739 - Count The Carries
- HDU 4588 Count The Carries
- hdu 4588 Count The Carries
- hdu 4588 Count The Carries
- HDU 4588 Count The Carries
- HDU 4588Count The Carries
- HDU 4588 Count The Carries 题解
- 数学题-hdu-4588-Count The Carries
- hdu 4588 Count The Carries(数论)
- Count The Carries - HDU 4588 水题
- 【瞎搞】 HDU 4588 Count The Carries
- HDU-4588 Count The Carries (模拟)
- HDU 4588 Count The Carries(规律)
- HDU 4588 Count The Carries(数学)
- hdu 4780 Candy Factory
- 关于c的部分总结
- hash算法
- 新版Spring官网下载
- (2)Fibonacci数列
- hdu 4588 Count The Carries 南京邀请赛
- Cholesky decomposition for Matrix Inversion
- android--Process and Thread 你应该记住的一些事
- 一个java文件经过什么流程转换成.class文件--javac(献给初学者)
- Linux:Failed to get exclusive lock on the configuration file
- 看懂亮度直方图 让你的曝光达到完美
- JQuery 获取选中checkbox值
- 不要告诉我你懂margin
- 士兵站队