problem

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≤10
​4
​​ 。

输出格式:
按递增顺序列出给定闭区间 [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
  • 独特:在区间内没有数迭代后等于他,他迭代后得到的数个数为独特性,如果是素数则加倍
  • 给定一个区间,求其中所有独特的幸福数和他的独立性

solution

  • 显而易见的思路是:直接枚举区间,对于每个数,判断是否是幸福数并计算独立值,用set维护每次迭代到的值,防止死循环的同时统计过程中的幸福数。再开一个大的set累加这些幸福数,如果一个数没有在大的set中(被别人迭代到),那就输出他。
  • 本来以为会超时的,结果直接过了emmmm

#include<bits/stdc++.h>
using namespace std;
set<int>happy;
vector<pair<int,int> >ans;
int dd(int x){int sum = 0;while(x>0){sum += (x%10)*(x%10);x /= 10;}return sum;
}
bool is_prime(int x){for(int i = 2; i <= sqrt(x)+1; i++)if(x%i==0)return false;return true;
}
void love(int x){int t = x;set<int>se;while(x!=1 && !se.count(x)){se.insert(x);x = dd(x);}if(x==1){//if(!is_prime(t))cout<<t<<" "<<se.size()<<"\n";//else cout<<t<<" "<<2*se.size()<<"\n";if(!is_prime(t))ans.push_back(make_pair(t,se.size()));else ans.push_back(make_pair(t,2*se.size()));se.erase(t);happy.insert(se.begin(),se.end());}
}int main(){//cout<<dd(dd(19));//love(19);//return 0;int l, r;cin>>l>>r;for(int i = l; i <= r; i++){love(i);}for(int i = 0; i < ans.size(); i++){if(!happy.count(ans[i].first)){cout<<ans[i].first<<" "<<ans[i].second<<"\n";}}if(ans.size()==0){cout<<"SAD\n";}return 0;
}

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

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

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

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

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

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

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

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

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

  5. 【CCCC】L2-030 冰岛人 (25分) 模拟题,二叉树链式存储,从底部向上

    problem L2-030 冰岛人 (25分) 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普 ...

  6. l2-029 特立独行的幸福 (25分)_霜降后盆栽幸福树,调整4个地方,不用再怕掉叶子了...

    原标题:霜降后盆栽幸福树,调整4个地方,不用再怕掉叶子了 幸福树,是一款颜值非常高的家庭盆栽绿植,其枝叶四季常青,在室内搁置的情况下,不但能够净化空气,美化家居,同时还能给人们带来美好的祝福,毕竟在传 ...

  7. 【CCCC】L2-011 玩转二叉树 (25分),二叉树建树与遍历(我讨厌树,@L2-006)

    problem L2-011 玩转二叉树 (25分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设 ...

  8. 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)

    problem L2-006 树的遍历 (25分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30), ...

  9. 【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计

    problem L2-005 集合相似度 (25分) 给定两个整数集合,它们的相似度定义为:N ​c ​​ /N ​t ​​ ×100%.其中N ​c ​​ 是两个集合都有的不相等整数的个数,N ​t ...

最新文章

  1. 获取SQLServer数据库中所有表
  2. opencv nms 学习笔记
  3. 面试中必知必会的那些题——单链表倒置
  4. Python基础入门:反射
  5. 结果出来了!视觉中国被罚30万 再次发布道歉声明...
  6. java集合类练习_JAVA集合类练习
  7. HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
  8. 成都睿铂x云南省地矿测绘院:丽江玉龙高精度地籍免像控案例分享
  9. P-Called-Party-ID头域
  10. Visio中如何绘制斜线箭头
  11. 简单实现滑动门效果css或js+css
  12. 神经网络训练ai玩游戏,人工神经网络入门
  13. 微信读书爬虫 wereader
  14. 使用 Calibre Web 搭建私人电子图书馆
  15. Cisco路由器的命令配置教程详解
  16. html a4页面样式_4个使用将HTML转换为PDF的方法介绍-js教程
  17. 记C++坑:3.结构体和类对齐补齐
  18. 北京大学冬令营(PKUWC2018)总结
  19. SEO优化的四个建议
  20. 转载:optparse模块OptionParser学习

热门文章

  1. markdownpad 2 的使用
  2. 算法求解中的变量、数组与数据结构(STL 中的容器)
  3. 强悍的 vim 实用功能
  4. 熟悉 CMake(二)—— 以一个实例说明 CMakeLists.txt 文件的编写
  5. 深度学习基础(二)—— 从多层感知机(MLP)到卷积神经网络(CNN)
  6. python学了真的很有用吗-会Python的人工作不会太差?编程课真的有必要学吗?
  7. python和c++哪个好-升学为主的编程学python和C++哪个好?
  8. 小白用python处理excel文件-Python3操作Excel文件(读写)的简单实例
  9. python自动化办公都能做什么-用Python自动办公,做职场高手(完结)
  10. python自动化办公模块有哪些-Python自动化办公知识点整理汇总