解方程
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
小璐有一天获得了一个形如 x | a = b的方程(a,b已知)
( |代表按位或)
她现在想要知道有多少个非负整数x能满足这个方程
聪明的你能帮帮她吗?
Input
多组输入,每组输入两个整数a,b
0<= a,b<= 10^8
Output
输出一个整数表示符合条件的非负整数解的个数
Hint:
对于第一组样例:1和3是符合条件的x。
对于第二组样例:1是符合条件的x。
对于第三组样例:没有符合条件的
Example Input
2 3 0 1 1 0
Example Output
2 1 0
#include<stdio.h> #include<math.h> #include<string.h> int fun(int *a,int n) { int count = 0; while(n) { a[count++] = n %2; n=n/2; } return count; } int main() { int a,b; int lena,lenb; int n,i,j; int a1[50],b1[50]; int flag; while(~scanf("%d%d",&a,&b)) { flag = 0; int sum = 0; int sum1=0; memset(a1,0,sizeof(a1)); memset(b1,0,sizeof(b1)); lena = fun(a1,a); lenb = fun(b1,b); if(lena>lenb) { flag=1; } // for(i=0;i<lenb;i++) // { // printf("%d %d\n",a1[i],b1[i]); // } for(i=0;i<lenb;i++) { if(a1[i]==1&&b1[i]==0) { flag=1; break; } if(a1[i]==1&&b1[i]==1) sum++; } //printf("sum = %d flag= %d\n",sum,flag); if(flag) printf("0\n"); else { printf("%d\n",(int)pow(2,sum)); } } return 0; }
1662

被折叠的 条评论
为什么被折叠?



