有一类数叫Self-Numbers , 任取一个正整数n , 界说f(n)为加上它每一位数字的和 , 例如:f(75)=75+7+5=87 , 以肆意一个整数n为起点可以按照此方式机关出无限递增的序列:n , f(n) , f(f(n)) , f(f(f(n)))…… 。 若是从33起头 , 下一个数就是33+3+3=39 , 接着是39+3+9=51 , 然后是51+5+1=57 , 可以发生如许一个序列:33 , 39 , 51 , 57 , 69 , 84 , 96 , 111 , 114 , 120 , 123 , 129 , 141…… , 我们将数字n称为f(n)的发生器 。 在上例中 , 33是39的发生器 , 39是51的发生器 , 51是57的发生器 。 一个没有发生器的数称作Self-Number , 例如100以内前13个Self-Number是1 , 3 , 5 , 7 , 9 , 20 , 31 , 42 , 53 , 64 , 75 , 86 , 97 。 将第i个Self-Number暗示为s[i] , 就形当作一个序列s[1]=1 , s[2]=3 , s[3]=5……
文章插图
需要这些哦
C++
方式/
1输入时先输入2个整数 , 暗示发生器的数值规模 , 规模在10000以内 , 以及要输出的Self-Number个数 。
然后 , 输入要输出的每个Self-Number数的序号值 。
文章插图
2【Self-Numbers问题怎样用C++解决】起首 , 界说一个常量 , 用来节制发生器的数值规模 。
文章插图
3界说各整型变量 , 节制法式的运行 。
文章插图
4接着 , 界说两个整型数组 , 保留各发生器所得的值 , 以及所得的Self-Number数 。
文章插图
5给数组sum初始化 , 初始值为0 。
文章插图
6接着 , 输入发生器n的规模 , 以及所输出的Self-Number的个数 。
文章插图
7界说整型数组u , 存入要输出的Self-Number数的序号 。
文章插图
8用for轮回 , 计较各发生器n所得的f(n)值 , 保留在数组sum中 。
文章插图
9用while轮回 , 节制获得发生器n的每一位数值 , 并实现累加 。
文章插图
10用两重for轮回 , 实现判定n以内的每个数是否为Self-Number , 若是不是Self-Number数 , 则f的值为1 。
推荐阅读
- win10中的通知栏怎样添加或删除图标通知
- Win10怎样设置图片密码登录
- 怎样用WORD在图片上写入艺术字
- 怎样将OPPO或小米手机云相册恢复到手机
- 怎样使紫薯粥变回漂亮的紫色?
- CAD图放大缩小后,怎样保持标注的尺寸不变
- 怎样在全民K歌里发评论
- qq怎样解除防沉迷
- 鼻涕是怎样形成的,怎样减少鼻涕 生活常识中怎样减少鼻涕
- 微信收藏保存在哪里,怎样保存微信收藏文件