代码如下
#include #include using namespace std; int main(int argc, char **argv) { map m; int n,inp; cin>>n; while(n--){ //以此输入存入map中 cin>>inp; m[inp]=0; } int tmp; for(auto i:m){ //循环验证,将非关键数在map中搜索,若存在则将其标志位置1 tmp=i.first; while(tmp!=1){ tmp=(tmp%2==0)?(tmp/2):(tmp*3+1)/2; if(m.count(tmp)){ m[tmp]=1; } } } int flag=0; //逆序输出标志位为0的数(关键数)(map默认是顺序) for(auto j=m.end();j!=m.begin();){ auto i=--j; if((*i).second==0){ if(flag==1) cout<<" "; flag=1; cout<<(*i).first; } } return 0; }
与柳诺给出的代码相比,下图是柳诺代码表现 下面是本文代码表现: 总之各有取舍,主要是柳诺的我没看明白。。。。
上一篇 【无标题】
下一篇 PAT乙级-1009
版权所有 (c)2021-2022 MSHXW.COM
ICP备案号:晋ICP备2021003244-6号