0的个数(极速版)
时间限制:700 ms | 内存限制:65535 KB
-
描述
-
要在半天内出好题目,没时间了,快用最快速度的告诉我所有整数二进制末尾0的个数的和。
只有一组大数据。
Hint:建议使用高效输入方式
while(~(c=getchar()))
if(c>='0'&&c<='9')x=x*10+c-'0';
-
输入
- 40,000,000个正整数(0≤每个整数≤2^64-1),每个整数后面都有一个空格 输出
- 只输出一个整数,为所有整数二进制末尾0的个数的和 样例输入
-
8 0 17
样例输出
-
67
-
-
AC代码:
-
-
#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<cstdio> using namespace std; int main() { /*freopen("input.txt","r",stdin);*/ long long x=0,cnt=0; char c; while(~(c=getchar())) { if(c>='0'&&c<='9')x=x*10+c-'0'; else { if(x==0){cnt+=64;} else while(!(x&1)) { cnt++; x>>=1; } x=0; } } printf("%ld\n",cnt); return 0; }