地址:http://acm.hit.edu.cn/judge/show.php?Proid=1087
思路:求1到1000000以內(nèi)的自數(shù),用了最笨的方法,先是i從1到1000000循環(huán)一遍求以i為基數(shù)的d(i),對(duì)flag[d(i)]置true,然后利用flag[]判斷為那些false的是自數(shù)。本以為會(huì)超時(shí),結(jié)果居然AC了,自己也感覺(jué)很奇怪……
代碼如下:

#include <stdio.h>
#include 
<memory.h>

#define MAX 1000001

int main()
{
    
bool flag[MAX];
    
int i;
    
int result, tmp;

    memset(flag, 
0sizeof(flag));
    
for(i = 1; i < MAX; i++)
    
{
        tmp 
= result = i;
        
while(tmp != 0)
        
{
            result 
+= tmp % 10;
            tmp 
/= 10;
        }


        
if(result < MAX)
        
{
            flag[result] 
= true;
        }

    }


    
for(i = 1; i < MAX; i++)
    
{
        
if(flag[i] != true)
        
{
            printf(
"%d\n", i);
        }

    }


    
return 0;
}