您的位置:首页 > 其它

hdu1128 Self Numbers

2016-01-23 17:50 260 查看
#include <cstdio>

#include <stdlib.h>

#include <string.h>

#include <algorithm>

using namespace std;

int main()

{

    int i, num, num0;

    bool a[1000005];

    memset(a, false, sizeof(a));

    for(i = 1; i <= 1000000; i++)

    {

        num0 = num = i;

        while(num0)

        {

            num += num0 % 10;

            num0 /= 10;

        }

        if(num <= 1000000) a[num] = true;

    }

    for(i = 1; i <= 1000000; i++)

        if(!a[i]) printf("%d\n", i);

    return 0;
}

心得:刚开始用递归打表,因为得出的数是有规律的,结果发现1000000的数字太大数组无法存储每一个数,同时也说明10000000对于数组来说是个阈值。后来看了题解,他是换了种思路,用布尔数组代替标准数组来做标记,同时用i遍历,很好的思路,长了见识了。不过也要注意,num经过几次相加后会大于1000000,所以要加条件,不然编译无法通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu