- 论坛徽章:
- 0
|
#include <iostream.h>
#include <conio.h>
void main()
{
int n = 1 , b = 9 , m = 1 , p = 10 , x = 0 , k = 0; // m是n的位数,p是10的m次方
for( ; n < 9999999999; n++ )
{
if( b = 0 ) // b=0时,n恰好为10的整数倍,算得n中1的个数为k,则n+1中有 K+1 个1......
{ // n+2,n+3.....n+9 中各有 k 个1
if( n == p ) // 如果n等于p,位数m加1,相应的p值改变
{
m++; p *= 10;
}
k = 0;
int ln = n / 10, lp = p;
for( ; m > 0 ; m-- )
{
if(ln % lp / ( lp / 10 ) == 1 )
k++;
lp /= 10;
}
}
else
{
if( b = 9 ) { x += k+1; b-- }
x += k; b--;
}
if( x == n ) { cout << n << endl; }
}
}
c++ builder 环境下运行,没有调试过,不知道速度怎样!
不过应该不错吧,哈哈,昨天想了一个晚上,哪位兄弟在机子上运行下帮我看看啊!
[ 本帖最后由 marinekiller 于 2006-4-8 22:47 编辑 ] |
|