注意事项: 输入的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; }
简单的a+b (C语言代码)浏览:704 |
【出圈】 (C语言代码)浏览:553 |
字符串的输入输出处理 (C语言代码)浏览:925 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:661 |
IP判断 (C语言代码)浏览:762 |
C二级辅导-进制转换 (C语言代码)浏览:660 |
C二级辅导-计负均正 (C语言代码)浏览:480 |
排序算法(选择,插入,冒泡)浏览:775 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:658 |
老王赛马 (C语言代码)浏览:1567 |