题目要求简要概述:输入一个小于1000的正整数,如果该正整数为奇数,进行2/n的运算,如果为偶数,进行(3n-1)/2的运算,反复进行计算,直至n=1后,输出运算的次数。
解题方法:
1,定义两个整形变量,分别用于输入n,记录运算次数(int n,index=0),最终输出的即为index。
2,注意在n=0或1的情况下,要分开讨论。
(1)定义bool类型,用于充当循环条件。
(2)循环开始,并判断n=1,0的情况。
(3)再判断n为奇数或偶数的情况,依据题意进行运算,并记录运算次数。
3,打印运算次数(输出答案)
4,结束函数
代码:
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n, index = 0; //定义两个int变量,分别用于输入样例与输出次数
scanf("%d",&n);
bool flag = false; //定义变量,用与while函数的条件判断
if(n!= 0)flag = true; //对n=0进行判断
while(flag=true&&n!=1){ //对n=0,1进行判断
if(n%2==0){ //运用if函数对n的不同情况进行判断,这里是在n为偶数情况下进行运算
n=n/2;
index++;
}
else{ //n在奇数情况下进行运算
n=(3*n+1)/2;
index++;
}
}
printf("%d",index); //输出运算次数
return 0;
}
这样我们就完成了,有更好的方法欢迎评论,有错误希望大家指出。