-
题目
-
思路
- 用一个哈希表记录数字是否应该被输出
- 输入的同时记录按规则生成的数字,将该数字记为不应输出
- 输入的数字存到数组中
- 记录应被输出的数据的个数,便于调整输出格式
- 将输入的数据从大到小排序,用于最后输出
- 输出数组中标记为“可输出”的值
- 用一个哈希表记录数字是否应该被输出
-
代码
#include <stdio.h> #include <algorithm> using namespace std; bool cmp(int a,int b){ return a>b; } int main(){ int n; scanf("%d",&n); int a[n],temp,p[10000]={0}; //记录是否应该被输出 for(int i=0;i<n;i++){ scanf("%d",&a[i]); temp=a[i]; while(temp!=1){ if(temp%2==0){ temp/=2; }else{ temp=(temp*3+1)/2; } p[temp]=1; } } int cnt=0; for(int i=0;i<n;i++){ if(p[a[i]]==0){ cnt++; } } sort(a,a+n,cmp); for(int i=0;i<n;i++){ if(p[a[i]]==0){ printf("%d",a[i]); if(cnt>1){ cnt--; printf(" "); } } } return 0; }
PAT笔记:1005 继续(3n+1)猜想 (25分)
最新推荐文章于 2025-03-05 16:46:18 发布