求解答:求1到1888888之间的平衡数。所谓i(十进制数)是平衡数是满足下列要求的数,1到i之间的十进制数中出现1的个数总和与i相等。

wza181818 2018-07-15 09:37:06
求1到1888888之间的平衡数。所谓i(十进制数)是平衡数是满足下列要求的数,1到i之间的十进制数中出现1的个数总和与i相等。
#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;
}
...全文
278 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2018-07-17
  • 打赏
  • 举报
回复
这代码没问题,我用了其他一种方法验算了下,输出结果是一致的。
起步向前走 2018-07-16
  • 打赏
  • 举报
回复
没看懂你说的平衡数是什么意思。按照你的说法,只有1才是平衡数。其他的任意一个数,出现1的次数都不会比这个数大。
threenewbee 2018-07-16
  • 打赏
  • 举报
回复
for (int i = 1 ; i < 1888888; i++)
{
//这里加上
cnt = 0;

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧