求1到1888888之间的平衡数。

来源:百度知道 编辑:UC知道 时间:2024/09/23 02:24:04
所谓i(十进制数)是平衡数是满足下列要求的数:1到i之间的十进制数中出现1的个数总和与i相等.

[332@~/c-cpp]$ gcc a.c --std=c99
[333@~/c-cpp]$ ./a.out
1
199981
199982
199983
199984
199985
199986
199987
199988
199989
199990
200000
200001
1599981
1599982
1599983
1599984
1599985
1599986
1599987
1599988
1599989
1599990
[334@~/c-cpp]$ cat a.c
#include <stdio.h>
#include <string.h>
int main()
{
int cnt = 0;
char buf[50];
for (int i = 1 ; i < 1888888; i++)
{
sprintf(buf, "%d", i);
for (int j = 0; j < strlen(buf); j++)
if (buf[j] == '1')
cnt++;
if (cnt == i)
printf("%d\n", i);
}

return 0;
}
[335@~/c-cpp]$