PAT-B 1001 害死人不偿命的(3n+1)猜想 (15)

来源:互联网 发布:英国工资 知乎 编辑:程序博客网 时间:2024/04/25 21:14

开始做PAT乙级了,加油!


题目链接:1001 害死人不偿命的3n+1猜想


之前自己写的代码没有通过,原来是因为用了while(sacnf()),根本不需要,只需要输入一次就行了。我就想第一题怎么就这么难么……

PAT的排名列表的真好,好多大神公布自己的Blog地址,里面有很多的解题日志。


AC代码:

#include<stdio.h>/*奇偶的判断*/int solve(int n){int cnt = 0;while(n != 1){if(n%2){//奇数 n = (3*n+1)/2;}else{n = n/2;}cnt++;}return cnt;} int main(){int n;scanf("%d",&n);printf("%d\n",solve(n));return 0;}

其中,看了luoluo大神的解题日志,有两点收获:

1. 判断奇偶的方法;n&1

2. 因为不管奇偶都要/2,所以可以这么写:把相同的处理部分写在同一步里面,使得代码更加的简洁。

while(n != 1){        if(n & 1)            n = 3*n + 1;        n /= 2;        ans ++;    }

0 0
原创粉丝点击