PAT乙级(Basic)题库---1005
来源:互联网 发布:抓取网页内容工具 mac 编辑:程序博客网 时间:2024/05/21 14:57
题目
1005-继续(3n+1)猜想
解题思路
最简单直接的想法,将输入的所有数的覆盖均求出,再与覆盖比较,得到不在覆盖中的关键数再进行排序输出。
注意:
1.memset函数需要头文件string.h支持,sort函数需要头文件algorithm支持。
2.memset函数对int数组的初始化只能为0或-1,因为memset函数是以字节为单位进行初始化内存的,0的二进制全为0,-1的二进制全为1,因此对4字节的int可以被初始化为0或-1。
代码
#include<iostream>#include<algorithm>#include<string.h>using namespace std;//用use数组记录是否被覆盖,下标表示该数,0表示未被覆盖,1表示被覆盖int use[105];//得到num覆盖的数,并将其改为被覆盖void test(int num){ int temp; if(num==1) { return; } else if(num%2) { temp=(3*num+1)/2; } else { temp=num/2; } //防止得到数越界,输入的数小于等于100,只判断100以内的是否被覆盖,超过的数不考虑 if(temp<101) { use[temp]=1; } test(temp);}//排序规则,用来给sort进行降序排序bool comp(int a,int b){ return a>b;}int main(){ //len记录关键数的个数 int n,len=0; //input数组记录输入的数,import数组记录关键数,输入的数不会多余100 int input[105],import[105]; //初始化是否被覆盖,开始时均未被覆盖 memset(use,0,sizeof(use)); cin>>n; for(int i=0;i<n;i++) { cin>>input[i]; test(input[i]); } for(int i=0;i<n;i++) { //判断输入的数是否被覆盖,即是否是关键数 if(use[input[i]]!=1) { import[len]=input[i]; len++; } } //降序排序 sort(import,import+len,comp); cout<<import[0]; for(int i=1;i<len;i++) { cout<<" "<<import[i]; } }
阅读全文
0 0
- PAT乙级(Basic)题库---1005
- PAT乙级(Basic)题库---1001
- PAT乙级(Basic)题库---1002
- PAT乙级(Basic)题库---1003
- PAT乙级(Basic)题库---1004
- PAT乙级(Basic)题库---1006
- PAT乙级(Basic)题库---1007
- PAT乙级(Basic)题库---1008
- PAT乙级(Basic)题库---1009
- PAT乙级(Basic Level)1009(Java)
- PAT乙级(Basic Level)1021(Java)
- PAT乙级(Basic Level)1046(Java)
- PAT乙级(Basic Level)1042(Java)
- PAT乙级(Basic Level)1001(Java)
- PAT乙级(Basic Leve)1043(C++)
- PAT乙级(Basic Level)1041(C++)
- PAT乙级(Basic Level)1047(C++)
- PAT乙级(Basic Level)1027(C++)
- tensorflow conv2d padding,tf图像卷积边缘扩展问题
- NumPy、Pandas、Matplotlib、 scipy机器学习库安装
- 2990:符号三角形
- Kubernetes应用部署策略实践
- Day 1
- PAT乙级(Basic)题库---1005
- 微信小程序 Picker
- Cannot create a session after the response has been committed
- jdbc--数据库操作
- 各地图API坐标系统比较与转换
- iptables的基本语法格式
- zookeeper通知watcher
- MyEclipse将普通项目转换成maven
- 最新Java面试题(附答案)