琨琨爸


私信TA

用户名:wangkunkun

访问量:465

签 名:

等  级
排  名 20950
经  验 682
参赛次数 0
文章发表 11
年  龄 0
在职情况 学生
学  校 南京市
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

#include<bits/stdc++.h>

using namespace std;

int s[10000+1]; //值为1表示下标为 非寂寞数。值为0则表示下标为寂寞数。


int getjimo(int a)//返回a的d(n)数,所有的数都有d(n)数

{

     int sum=a;

     for( ; a>0; a=a/10)         sum+=a%10;            

     return sum;   

}

int main()

{

    int n;cin>>n;

    //对n以下的数字从1开始计算它的d(n)数

    for(int i=1;i<=n;i++){

           int dn=getjimo(i);

           //if(dn>n) break; //如dn数太大,会超出数组空间,超出n的数没有必要考虑,

           if(dn>n) continue; //开始用break只能打45分。

   //应该用continue,因为dn数与原始数的大小没有必然关系,即原数大,可能生成的dn却小 

           s[ dn  ]=1;

     }

     for(int i=1;i<=n;i++){

             if(s[i]==0) cout<<i<<endl;

       }

    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »