对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 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

分析:1、判断一个数是不是特立独行的幸福数,同时累计其独立性。2、判断其是不是素数,是的话独立性需要乘二。用num[i]储存第i个元素的独立性,用notIndep[i]表示第i各数不是特立独行的幸福数——将所有迭代产生的数标记为1,ans用来储存可能的幸福数,mark用来存储一个数迭代过程中产生的数,如果重复则说明不是幸福数~

#include <bits/stdc++.h>
using namespace std;
int A, B, flag, num[10001], notIndep[10001];
bool isPrime(int a) {if (a == 1) return false;for (int i = 2; i <= sqrt(a); i++)if (a % i == 0) return false;return true;
}
bool isIndep(int x) {set<int> mark;int X = x, temp1, temp2;while (X != 1) {mark.insert(X);temp1 = 0;while (X) {temp2 = X % 10;X /= 10;temp1 += temp2 * temp2;}num[x]++;notIndep[temp1] = 1;X = temp1;if (mark.count(X)) return false;} return true;
}
int main() {cin >> A >> B;vector<int> ans;for (int i = A; i <= B; i++)if (isIndep(i)) ans.push_back(i);for (int i = 0; i < ans.size(); i++) {if (isPrime(ans[i])) num[ans[i]] <<= 1;if (!notIndep[ans[i]]) {cout << ans[i] << ' ' << num[ans[i]] << endl;flag = 1;}}if (!flag) cout << "SAD"; return 0;
}

L2-029 特立独行的幸福 (25 分)-PAT 团体程序设计天梯赛 GPLT相关推荐

  1. L2-039 清点代码库 (25 分)-PAT 团体程序设计天梯赛 GPLT

    上图转自新浪微博:"阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍.请设计一个程序,能够将代码库中所有功能重复的代码找出.各位大佬有啥想法,我当时就懵了,然 ...

  2. L2-040 哲哲打游戏 (25 分)-PAT 团体程序设计天梯赛 GPLT

    哲哲是一位硬核游戏玩家.最近一款名叫<达诺达诺>的新游戏刚刚上市,哲哲自然要快速攻略游戏,守护硬核游戏玩家的一切! 为简化模型,我们不妨假设游戏有 N 个剧情点,通过游戏里不同的操作或选择 ...

  3. L2-038 病毒溯源 (25 分)-PAT 团体程序设计天梯赛 GPLT

    病毒容易发生变异.某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化. 现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链. 在此假设给 ...

  4. L2-037 包装机 (25 分)-PAT 团体程序设计天梯赛 GPLT

    一种自动包装机的结构如图 1 所示.首先机器中有 N 条轨道,放置了一些物品.轨道下面有一个筐.当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中.当 0 号按钮被按下时,机械手将抓 ...

  5. L2-035 完全二叉树的层序遍历 (25 分)-PAT 团体程序设计天梯赛 GPLT

    一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树 ...

  6. L2-033 简单计算器 (25 分)-PAT 团体程序设计天梯赛 GPLT

    本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1存放数字,另一个堆栈 S2存放运算符.计算器的最下方有一个等号键,每次按下这个键,计 ...

  7. L2-031 深入虎穴 (25 分)-PAT 团体程序设计天梯赛 GPLT

    著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一个房间,或者又有很多条路,同样是每条 ...

  8. L2-030 冰岛人 (25 分)-PAT 团体程序设计天梯赛 GPLT

    2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿用的是维京人古老的父系姓制,孩子的 ...

  9. L2-036 网红点打卡攻略 (25 分)-PAT 团体程序设计天梯赛 GPLT

    一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略".你的 ...

最新文章

  1. 【c语言】蓝桥杯算法提高 淘淘的名单
  2. 求最大值_Excel求最大值地球人都知道,那要求出第2、第3、第N大值呢?
  3. 为 MySQL/MariaDB 开启 Binlog 功能
  4. Ubuntu下用gcc与nasm联合编译
  5. 学习笔记——itertools模块
  6. YonBuilder直播预约第七期 | 一场直播带你走近规则链
  7. cvCmp和cvCmpS
  8. MFC版链表实现稀疏多项式相加减
  9. [翻译]SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb
  10. 推荐一款好用的消息推送服务WxPusher
  11. FISCO BCOS 日志分析 关键词 格式
  12. 【回归预测】基于matlab鲸鱼算法WOA优化混合核极限学习机KELM回归预测【含Matlab源码 JQ004期】
  13. Windows安装--拼音分词器
  14. 开发团队人员配备与角色分配
  15. layui数据表格合并列
  16. 【中塘镇】助力儿童,健康成长---创意超轻黏土手工制作主题活动
  17. 腾讯移动互联网事业群(MIG)综合分析
  18. UrlRewriter.NET 与 UrlRewrittingNet.UrlRewriter比较
  19. 看不懂英文怎么办!学习编程,英语对初学者很重要吗?
  20. SpringCloud2.0

热门文章

  1. Vue.js 运行机制全局概览浅读
  2. WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit)
  3. kafka java 生产消费程序demo示例
  4. [51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]
  5. ajax post 数组
  6. 部署Symantec Antivirus 10.0网络防毒服务器之三
  7. 苹果紧急修复已遭利用的两个0day
  8. 如何查看Oracle数据库字符集 尚未研究
  9. JMeter:生成漂亮的多维度的HTML报告
  10. 互联网+工业,从哪里开始?