1005. 继续(3n+1)猜想 (25)——做题纪录
来源:互联网 发布:pic12数据手册 编辑:程序博客网 时间:2024/06/04 19:17
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。
当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆盖。
现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。
输入格式:每个测试输入包含1个测试用例,第1行给出一个正整数K(<100),第2行给出K个互不相同的待验证的正整数n(1<n<=100)的值,数字间用空格隔开。
输出格式:每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用1个空格隔开,但一行中最后一个数字后没有空格。
输入样例:63 5 6 7 8 11输出样例:
7 6
//// main.cpp// PATBase1005//// Created by Tong on 3/14/16.// Copyright © 2016 Tong. All rights reserved.//#include <iostream>#include <map>using namespace std;map<long, long> resultMap, coverMap;void callatz(long n){ if (n!=1) { long k = n; map<long, long>::iterator it, itCover; it = resultMap.find(k); if (it!=resultMap.end()) { return; }else{ if (n%2!=0) { n = 3 * n + 1; } itCover = coverMap.find(n/2); if (itCover!=coverMap.end()) { itCover->second = 1; } resultMap.insert(pair<long, long>(k, n/2)); callatz(n/2); } } return;}int main(int argc, const char * argv[]) { int k; int n; while (scanf("%d", &k)!=EOF) { for (int i = 0; i < k; i++) { cin>>n; coverMap.insert(pair<long, long>(n, 0)); } for (map<long, long>::iterator it = coverMap.begin(); it != coverMap.end(); it++) { callatz(it->first); } bool first = true; for (map<long, long>::reverse_iterator it = coverMap.rbegin(); it != coverMap.rend(); it++) { if (it->second==0) { if (first) { cout<<it->first; first = false; }else{ cout<<" "<<it->first; } } } } return 0;}
0 0
- 1005. 继续(3n+1)猜想 (25)——做题纪录
- 1001. 害死人不偿命的(3n+1)猜想 (15)——做题纪录
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)
- iOS创建Framework(下)
- chome, firefox浏览器js的jQuery加载.get(),.ajax()
- Android面试准备 第一天 第一例 Handler机制
- 在mac air下的 android studio下 遇到的奇葩错误
- swift与OC混编需要注意的小问题
- 1005. 继续(3n+1)猜想 (25)——做题纪录
- CF 637D. Running with Obstacles 贪心
- Java 环境变量参数
- Android开发一些学习经验
- spring aop表达式详解
- BoneCP数据源配置详解
- TcxgridDbLayoutView使用有感
- 【重要】Bitmap 花式耍法
- x86处理器中的CS与IP寄存器