首页 > 其他 > 详细

【PAT_Basic日记】1005. 继续(3n+1)猜想

时间:2015-01-25 12:19:27      阅读:301      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
#include <stdlib.h>

/**
逻辑上的清晰和代码上的清晰要合二为一
(1)首先在逻辑上一定要清晰每一步需要干什么,
(2)然后在代码上以逻辑的每一步为单位来实现代码
(3)思维逻辑跟不上时,用调试看看,尽量以电脑编译器的思维去想代码的实现
*/

int my_process(int n)
{
    if(n%2 == 0)
    {
        n=n/2;
    }
    else
    {
        n=(3*n+1)/2;
    }
    return n;
}



int main()
{
    int k;
    int a[100]={0};
    int *p=a;
    int i,j,t;
    int n;
    //input
    scanf("%d",&k);
    for(i=0;i<k;i++)
    {
        scanf("%d",&a[i]);
    }

    //process
    for(i=0;i<k;i++)
    {
        n=a[i];
        while(n != 1)
        {

            n=my_process(n);
            for(j=0;j<k;j++)
            {
                if(p[j]==n)
                {
                    p[j]=1;
                    break;  //break是因为测试例子中没有相同数字
                }
            }
        }
    }


    //sort
    for(i=0;i<k;i++)
        for(j=0;j<k-i;j++)
        {
            if(a[j+1]>a[j])
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }

    //output
    printf("%d",a[0]);
    for(i=1;i<k;i++)
    {
        if(a[i]!=1)printf(" %d",a[i]);
    }
    printf("\n");

    return 0;
}

  

【PAT_Basic日记】1005. 继续(3n+1)猜想

原文:http://www.cnblogs.com/panhao/p/4247924.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!