nyoj-1161-3n+1问题

来源:互联网 发布:js onready 编辑:程序博客网 时间:2024/06/03 18:57

3n+1问题

时间限制:1000 ms  |  内存限制:65535 KB
难度:0
描述

对于任意大于一的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半,经过若干次这样的变换,一定会使n变为1.求输出变换的次数,注 要求次数要对3取余;例如3->10->5->16->8->4->2->1 变换了7次,对3取余的1; n<=109

 

输入
测试数据有多组
输出
每次输出占一行
样例输入
32
样例输出
11
#include<stdio.h>int main(){    int n,t;    while(scanf("%d",&n)!=EOF)    {        t=0;        while(n!=1)        {            if(t>=3) t%=3;            if(n&1)            {                n=3*n+1;                n>>=1;                t+=2;            }            else            {                n>>=1;                t++;            }        }        printf("%d\n",t%3);    }    return 0;}


0 0
原创粉丝点击