L2-029 特立独行的幸福 (25 分)
对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数的个数。如果这个数还是个素数,则其独立性加倍。例如 19 在区间[1, 100] 内就是一个特立独行的幸福数,其独立性为 2×4=8。
另一方面,如果一个大于1的数字经过数次迭代后进入了死循环,那这个数就不幸福。例如 29 迭代得到 85、89、145、42、20、4、16、37、58、89、…… 可见 89 到 58 形成了死循环,所以 29 就不幸福。
本题就要求你编写程序,列出给定区间内的所有特立独行的幸福数和它的独立性。
输入格式:
输入在第一行给出闭区间的两个端点:1<A<B≤104。
输出格式:
按递增顺序列出给定闭区间 [A,B] 内的所有特立独行的幸福数和它的独立性。每对数字占一行,数字间以 1 个空格分隔。
如果区间内没有幸福数,则在一行中输出 SAD
。
输入样例 1:
10 40
输出样例 1:
19 8
23 6
28 3
31 4
32 3
注意:样例中,10、13 也都是幸福数,但它们分别依附于其他数字(如 23、31 等等),所以不输出。其它数字虽然其实也依附于其它幸福数,但因为那些数字不在给定区间 [10, 40] 内,所以它们在给定区间内是特立独行的幸福数。
输入样例 2:
110 120
输出样例 2:
SAD
这题其实不难想,就是有一个点要注意,特立独行数先要存下来,然后再看后续的特立独行数在迭代的过程中会不会产生原来就有的特立独行数,如果有,原来的要筛掉的。
代码:
#include<bits/stdc++.h>
using namespace std;map<int,int> mp,t;
int ap[10001];
int fun(int x)
{int sum=0,pos=0;while(sum!=1){sum=0;mp[x]++;while(x){int tmp=x%10;sum=sum+tmp*tmp;x=x/10;}x=sum;pos++;if(mp[x]>1){pos=-1;break;}ap[sum]=1;}mp.clear();return pos;
}
int isPrime(int x)
{if(x<2)return 0;for(int i=2;i<=sqrt(x);i++){if(x%i==0)return 0;}return 1;
}
int main()
{int a,b,sum=0;cin>>a>>b;for(int i=a;i<=b;i++){if(fun(i)!=-1){t[i]=fun(i)*(isPrime(i)+1);//cout<<i<<endl;} }//把特立独行数先存下来,后续再改掉那些被依附的特立独行数for(int i=a;i<=b;i++){if(t[i]!=0&&ap[i]==0){cout<<i<<" "<<t[i]<<endl;sum++;}}if(sum==0)cout<<"SAD"<<endl;
}
L2-029 特立独行的幸福 (25 分)相关推荐
- 【CCCC】L2-029 特立独行的幸福 (25分),模拟题,set用法
problem L2-029 特立独行的幸福 (25分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 ...
- 特立独行的幸福 (25 分)
特立独行的幸福 (25 分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 ...
- L2-029 特立独行的幸福 (25 分)-PAT 团体程序设计天梯赛 GPLT
对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...
- 特立独行的幸福 (25分)
对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...
- 7-120 特立独行的幸福 (25分)
对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...
- l2-029 特立独行的幸福 (25分)_霜降后盆栽幸福树,调整4个地方,不用再怕掉叶子了...
原标题:霜降后盆栽幸福树,调整4个地方,不用再怕掉叶子了 幸福树,是一款颜值非常高的家庭盆栽绿植,其枝叶四季常青,在室内搁置的情况下,不但能够净化空气,美化家居,同时还能给人们带来美好的祝福,毕竟在传 ...
- 7-113 特立独行的幸福 (20 分) C语言
对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...
- 天梯赛L2-029 特立独行的幸福
L2-029 特立独行的幸福 (25分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 ...
- 【CCCC】L2-022 重排链表 (25分),,链表遍历
problem L2-022 重排链表 (25分) 给定一个单链表 L 1 →L 2 →⋯→L n−1 →L n ,请编写程序将链表重新排列为 L n →L ...
- 【CCCC】L2-011 玩转二叉树 (25分),二叉树建树与遍历(我讨厌树,@L2-006)
problem L2-011 玩转二叉树 (25分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设 ...
最新文章
- Google 宣布将 Istio 商标转移给 Open Usage Commons | 云原生生态周报 Vol. 57
- Nodejs简介以及Windows上安装Nodejs
- sonar-checkstyle plugin源码
- mysql use index用法_MySQL中USE INDEX 和 FORCE INDEX
- BERT重计算:用22.5%的训练时间节省5倍的显存开销(附代码)
- 2分钟 Docker 部署 SprinBoot 集成 Flowable 工作流引擎
- windows下mysql主从同步_详解windows下mysql的主从同步
- 【英语学习】【Level 07】U04 Rest and Relaxation L2 A rest stop with everything
- 微信找不到nfc功能_手机的NFC如何使用?3分钟教会你!
- 使用Docker保护软件供应链安全
- 人脸方向学习(十三):Face Tracking-人脸跟踪KCF解读
- 适配器模式在 Java 日志中的应用
- 令前端工程师追捧的一款前端开发IDE工具WebStorm
- Atitit 信息系统安全法 目录 1. 常见的安全保护目标	1 2. WEB安全风险行为	2 2.1. Injection	2 2.2. Broker Authentication损坏的身份验证
- 仿今日头条项目——个人中心
- 计算机开机密码输入不了,win10开机密码输入不了,win10开机密码输入没反应
- IDEA 2020下载与安装
- 软件开发生命周期的五个阶段
- 判定树与判定表的定义与相关练习
- 金仓数据库在 TPCE(dbt5,tpsE)测试框架方面的实践和突破