PTA 7-254 静态局部变量(程序举例)
分数 100
作者 于延
单位 哈尔滨师范大学
任务描述
3n+1猜想是当今最简单有趣又没有解决的数学问题之一,指的是对于每一个正整数,如果它是奇数,则对它乘 3 再加 1,如果它是偶数,则对它除以 2,如此循环,最终都能够得到 1。
请设计函数long next(long n){ },返回3n+1猜想中形式参数n的下一个值。例如:next(5)的值为16、next(16)的值为8等等。
主函数的功能为读入一个整数n,输出变换到1的过程。
#include<stdio.h>
long next(long n){
//请补充代码
}
int main(){
long n;
scanf("%ld",&n);
while(n!=1){
n=next(n);
}
return 0;
}
输入样例:
5
输出样例:
Times of 1 is 16.
Times of 2 is 8.
Times of 3 is 4.
Times of 4 is 2.
Times of 5 is 1.
输入样例:
7
输出样例:
Times of 1 is 22.
Times of 2 is 11.
Times of 3 is 34.
Times of 4 is 17.
Times of 5 is 52.
Times of 6 is 26.
Times of 7 is 13.
Times of 8 is 40.
Times of 9 is 20.
Times of 10 is 10.
Times of 11 is 5.
Times of 12 is 16.
Times of 13 is 8.
Times of 14 is 4.
Times of 15 is 2.
Times of 16 is 1.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
long next(long n){
if(n % 2 == 1)
return 3*n+1;
else
return n/2;
}
int main(){
long n, count = 0;
scanf("%ld",&n);
while(n!=1){
count++;
n=next(n);
printf("Times of %d is %ld.\n", count, n);
}
return 0;
}
解题思路:
略
归属知识点:
函数
循环结构