注意事项: 输入的n不能为int型,估计后台测试的数据里有大于int表示范围的。。。
参考代码:
#include<stdio.h> //#include<memory.h> int isOrNot(long long dec){ int i = 0; int num[32]; //memset(num, 0, 32 * sizeof(int)); while(i < 32){ num[i++] = dec % 2; dec /= 2; } int flag = 1; for(int j = 0; j < 16; j++){ if(num[j] != num[31 - j]){ flag = 0; break; } } return flag; } int main(){ long long n; int number = 0; while(scanf("%lld", &n) != EOF){ if(isOrNot(n) == 1) number++; } printf("%d\n", number); return 0; }
0.0分
0 人评分
您好,判断的时候如果用位运算的话,会不会更快: bool IsDuichen(long n) { long long num1,num2; for(int i=0;i<16;i++) { num1=n<<i; num2=n<<(31-i); if(num2!=(num1<<31-(2*i))) {return false;} } return true; }