hdu 4737 A Bit Fun
http://acm.hdu.edu.cn/showproblem.php?pid=4737
这个题一开始是输入一个n和一个p,n是说有n个数,p是里面用二进制 或 运算,其中最后结果不大于p,看最多能运算几个。最后输出最多运算的个数。
AC代码:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int t,k; __int64 sum; __int64 n,i,j,p,nu; __int64 a[100001]; scanf("%d",&t); k = 0; while(t--) { k++; scanf("%I64d%I64d",&n,&p); for(i = 0; i < n; i++) { scanf("%I64d",&a[i]); } nu = 0; for(i = 0; i < n; i++) { sum = 0; for(j = i; j < n; j++) { sum= sum|a[j]; //总和对每个数据进行一次或运算 if(sum<p) //判断是否小于p,如果小于p则数量加一 { nu++; } else { break; } } } printf("Case #%d: %I64d\n",k,nu); } return 0; }