码迷,mamicode.com
首页 > 其他好文 > 详细

oj---pat----b1005---继续(3n+1)猜想

时间:2017-06-03 22:39:14      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:eve   logs   int   pre   ace   iterator   roc   i++   include   

 

pat会给出“假条件”。有几个测试点n远大于100了。

set可以逆序遍历。

#include<cstdio>
#include<set>
using namespace std;
set<int> alln;
int num[10000]={0};
int main(){
    int k;
    while(scanf("%d",&k)!=EOF){
        int n=0;
        for(int i=0;i<k;i++){
            scanf("%d",&n);
            alln.insert(n);
            bool isprocessed=0;
            while(n!=1){
                if (!isprocessed&&num[n]>=1) break;
                 if(n%2==0){
                    n=n/2;
                    num[n]++;
                    isprocessed=1;
                }
                else if(n%2==1){
                    n=(3*n+1)/2;
                    num[n]++;
                    isprocessed=1;
                }
                
            }
        }
        bool flag=1;
        set<int>::reverse_iterator iter;
        for(iter=alln.rbegin();iter!=alln.rend();iter++){
            if(flag&&num[*iter]==0){
                printf("%d",*iter);
                flag=0;
            }
            else if(num[*iter]==0){
                printf(" %d",*iter);
            }            
        }
    }
    return 0;
}

 

oj---pat----b1005---继续(3n+1)猜想

标签:eve   logs   int   pre   ace   iterator   roc   i++   include   

原文地址:http://www.cnblogs.com/kprac/p/6938620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!