|
发表于 2021-3-16 19:22:23
|
显示全部楼层
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- void reverse(char str[], char rts[]);
- void Dec2bin(int, char []);
- void reverse(char str[], char rts[])//回文
- {
- int i, j, k;
- k = strlen(str);
- for (i = 0, j = k - 1; i < k; i++, j--)
- {
- rts[i] = str[j];
- }
- rts[k] = '\0';
- }
- void Dec2bin(int num, char bin[])//十进制转二进制
- {
- int i = 0, j, k;
- j = num;
- while (j)
- {
- k = j % 2;
- bin[i++] = k + '0';
- j /= 2;
- }
- bin[i] = '\0';
- }
- main()
- {
- char str[128], rts[128], bin[128];
- int i, j, k, len, flag = 1, sum = 0;
- for (i = 1; i < 1000000; i += 2) //由于要二进制回文后也相等,所以只能是偶数
- {
- sprintf(str, "%d", i);
- reverse(str, rts);
- k = atoi(rts);
- if (k == i)
- {
- Dec2bin(i, bin);
- reverse(bin, rts);
- len = strlen(bin);
- for (j = 0; j < len; j++)
- {
- if (bin[j] != rts[j])
- {
- flag = 0;
- break;
- }
- }
- if (flag)
- {
- sum += i;
- printf("%d ", i);
- }
- flag = 1;
- }
- }
- printf("\n%d\n", sum);
- }
复制代码
答案为:
1 3 5 7 9 33 99 313 585 717 7447 9009 15351 32223 39993 53235 53835 73737 585585
总和为:872187 |
|