问题标题: 酷町堂:3944

0
0
已解决
范皓翔
范皓翔
初级光能
初级光能

3944   数字漩涡

题目描述 Description

对一个正整数,不断进行如下操作:如果它是奇数,就对它乘3再加1,如果是偶数,就除以2。最终这个整数会变成1。就像是数字落入了漩涡,最终都会被卷入漩涡中心。
现给出一个正整数n(2<=n<=1000),编程求解n要经过几次变换会变成1。

输入描述 Input Description

一个正整数n。

输出描述 Output Description

一个正整数,表示变换次数。

样例输入 Sample Input

 

5

样例输出 Sample Output

 

5

数据范围及提示 Data Size & Hint

5是奇数,乘3加1得到16,16是偶数,除以2得到8,8是偶数……
变换过程:5—>16—>8—>4—>2—>1,变换次数为5次。

 

3944   数字漩涡

 

Wrong Answer:10分

 

 

范皓翔的测评结果:

 

测试点#1测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#2测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#3测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#4测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#5测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#6测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#7测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#8测评结果 : Accepted时间 : 0ms
测试点#9测评结果 : Wrong Answer时间 : 0ms偷看一下数据测试点#10测评结果 : Wrong Answer时间 : 0ms偷看一下数据

 

我的提交(cpp):

#include<iostream>
using namespace std;
int main()
{
    int a,b=0;
    cin>>a;
    while(a!=1){
    if(a%2==1){
      a=a*3+1;
    }
    if(a%2==0){
      a=a/2;
    }
    b++;
}
    cout<<b;
    return 0;

}

怎么改


0
已采纳
包涵宇
包涵宇
中级天翼
中级天翼

范皓翔 你好!!!

将 if(a%2==0)改成else 即可AC

望采纳!!!

0
王鑫烨
王鑫烨
中级光能
中级光能

    将 if(a%2==0)   改成else if(a%2==1)就行了!

        
   

 

王鑫烨在2019-09-15 13:12:40追加了内容

望采纳

0
0
董子墨
董子墨
中级天翼
中级天翼

while里面第二个if应改成else,因为如果是奇数,前面if执行过后,第二个if还会再执行一遍,但是计数器只加了一遍

0
0
我要回答