pat 乙级 1005 继续(3n+1)猜想 (25)
来源:互联网 发布:asp新闻发布系统源码 编辑:程序博客网 时间:2024/04/30 04:10
思路就是 定义一个数组 用来标记 每一个递推过程中出现的每一个数字是否出现过 ,出现标记为1;
具体看代码:
#include <stdio.h>#include <iostream>#include <cstdlib>#include <cmath>#include <cctype>#include <string>#include <cstring>#include <algorithm>#include <ctime>using namespace std;int c[100000]={0}; // 注意 这里不要开小了 ..一开始发生断错误就是开小了int main() { int N; cin>>N; int a[N]; int kong=0,num; // 用来格式输出的 for (int i = 0; i < N; ++i) { cin>>num; a[i]=num; if (a[i]==1) continue; if (c[num]==0) // 如果未被标记过 { while (num!=1) { if (num%2==0) { num=num/2; c[num]++; // 标记为1 } else { num=(3*num+1)/2; c[num]++; // 标记为1 } } } } sort(a,a+N); // 题目要求 从大到小输出 所以排序 。然后倒着遍历 for (int i=N-1;i>=0;i--) { if (a[i]==1) // 1 肯定是关键数 { if (kong>0) { cout<<" "; // 这里是一个格式输出 下面同理 } cout<<"1"; kong++; } else if (c[a[i]]==0) // 如果没被标记过 输出即可 {if (kong>0) { cout<<" "; } cout<<a[i]; kong++; } } return 0;}
AC图:
阅读全文
0 0
- PAT乙级1005:继续(3n+1)猜想 (25)
- pat 乙级 1005 继续(3n+1)猜想 (25)
- pat 乙级 1005 继续(3n+1)猜想 (25)
- PAT乙级1005 继续(3n+1)猜想
- PAT 乙级 1005 继续(3n+1)猜想 python
- PAT乙级 1005.继续(3n+1)猜想 (25)
- PAT-乙级-1005. 继续(3n+1)猜想 (25)
- 【PAT】(乙级)1005. 继续(3n+1)猜想 (25)
- PAT乙级.1005. 继续(3n+1)猜想 (25)
- PAT乙级1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)-PAT乙级
- PAT乙级 1005. 继续(3n+1)猜想 (25)
- PAT乙级1005. 继续(3n+1)猜想 (25)
- PAT乙级 1005. 继续(3n+1)猜想 (25)
- [PAT乙级]1005. 继续(3n+1)猜想 (25)
- 1005. 继续(3n+1)猜想 (25)--PAT乙级
- PAT 乙级练习题1005. 继续(3n+1)猜想 (25)
- PAT乙级1005. 继续(3n + 1)猜想(25)
- hdu 6148 Valley Numer (数位dp)
- 创建索引原则
- Java 位运算符
- 如何从零开始构建自己的游戏
- 数据结构排序--冒泡与选择
- pat 乙级 1005 继续(3n+1)猜想 (25)
- Linux部署Web项目小记
- HDU 5787K-wolf Number
- [ Bootstrap ] 可视化布局
- 项目中处理压缩文件自制的一个小工具
- SLF4J: Class path contains multiple SLF4J bindings.
- #setLocal的作用域
- jmeter 压测工具
- leetcode 655. Print Binary Tree