L2-1 特立独行的幸福 (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≤10
4

输出格式:
按递增顺序列出给定闭区间 [A,B] 内的所有特立独行的幸福数和它的独立性。每对数字占一行,数字间以 1 个空格分隔。

如果区间内没有幸福数,则在一行中输出 SAD。


模拟赛思维混乱了…
我的方法是抽象出树形结构,然后按照处理树的方式来做这题(转换为了树的遍历…) 这样的思维最为清晰。

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
set<int> child[maxn];
int path[maxn];void dfs(int root,int sum){path[root]=sum;for(auto i=child[root].begin();i!=child[root].end();i++){dfs(*i,sum+1);}}bool isPrime(int n){if(n==1) return false;for(int i=2;i<=n/i;i++){if(n%i==0){return false;}}return true;
}void get(int k){if(k==1) return;int sum=0;int t=k;while(k!=0){sum+=(k%10)*(k%10);k/=10;}if(child[sum].find(t)==child[sum].end()){// cout<<sum<<endl;child[sum].insert(t);if(sum!=1){get(sum);}}else return;
}int main(){int a,b;cin>>a>>b;for(int i=a;i<=b;i++){get(i);}dfs(1,0);int cnt=0;for(int i=a;i<=b;i++){if(child[i].size()==0&&path[i]>0){if(isPrime(i)) path[i]*=2;printf("%d %d\n",i,path[i]);cnt++;}}if(cnt==0) printf("SAD\n");}

天梯L2-029 特立独行的幸福相关推荐

  1. 天梯赛L2-029 特立独行的幸福

    L2-029 特立独行的幸福 (25分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 ...

  2. 【L2-029 特立独行的幸福】

    天梯赛L2-029 特立独行的幸福 题目详情: 输入样例 1: 10 40 输出样例 1: 19 8 23 6 28 3 31 4 32 3 思路: 这个题也是借鉴了网上大佬的写法 这个题是求特立独行 ...

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

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

  4. 【CCCC】L2-029 特立独行的幸福 (25分),模拟题,set用法

    problem L2-029 特立独行的幸福 (25分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 ...

  5. 7-3 特立独行的幸福

    z作业做不出,参考网上资料自己进行修改改编的 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 ...

  6. PTA习题【python】 7-5 特立独行的幸福

    题目介绍 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得 ...

  7. 特立独行的幸福 (25 分)

    特立独行的幸福 (25 分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 ...

  8. 7-113 特立独行的幸福 (20 分) C语言

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

  9. 【PTA-训练day17】L2-029 特立独行的幸福 + L1-071 前世档案

    L2-029 特立独行的幸福 - 递归/模拟 + 判断素数 PTA | 程序设计类实验辅助教学平台 思路: 第一层循环是边界循环  for(int i=l;i<=r;i++) 枚举每一个i 第二 ...

  10. GPLT 特立独行的幸福

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

最新文章

  1. 在 XML 中添加实体
  2. mysql2教程_mySQL 教程 第2章 安装和介绍mySQL
  3. jfinal html5,Jfinal框架整合webSocket技术功能实现
  4. 【Google 行销课】产品关键词的搜索门道
  5. 开门红讨采头,开工喜庆红色PSD分层海报模板
  6. asp.net 类似 webbrowser_一款类似经典的FC的像素风忍者游戏
  7. mysql-cluster 安装篇(1)---简介
  8. mysql中varbinary、binary、char、varchar异同
  9. (转)详解HTML网页源码的charset格式
  10. python迭代器学习与简单的实践
  11. 中国磷肥市场发展分析与产能需求调研报告2022版
  12. IDEA的Mybatis插件
  13. vpay模式软件开发 vpay系统
  14. JAVA动态桌面制作_自己动手制作安卓动态壁纸教
  15. 多元函数的高阶微分公式 与 Taylor公式
  16. 群响刘思毅 | 创始人的流量焦虑
  17. python开发飞机小游戏_Python开发的飞机打外星人小游戏
  18. win10蓝牙不能用
  19. IOS原生生成二维码
  20. VPP学习(二)VPP安装

热门文章

  1. JSON: JavaScript Object Notation(JavaScript 对象表示法)
  2. 雅虎搜索架构_雅虎! 想要推动您的网站搜索
  3. 分布电容和杂散电容_分布电容
  4. 深圳大学使用路由器登陆校园网,openwrt登陆drcom,d版教程
  5. linkinfo.dll 病毒,烦!
  6. matlab中Current Folder的修改
  7. 数据结构 javascript 描述[Data-Structure described byJavaScript]
  8. UnityEngine.Quaternion.LookRotation的使用(感觉这个用着还不错做一个笔记)
  9. rio中安装tms 的web core、sparkle、aurelius、xdata组件
  10. 开仓平仓基本类型有哪些?股指开仓平仓指的是什么?