Problem1023--[视频]循环结构(while)2(角谷猜想)

1023: [视频]循环结构(while)2(角谷猜想)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 39  Solved: 26
[Status] [Submit] [Creator:]

Description

学习目标:120秒内 一气呵成 打完代码,并且运行正确,并且提交正确。

【角谷猜想】  对于任意大于1的自然数n,若n为奇数,则将n变为3*n+1,否则将n变为n的一半。经过若干次这样的变换,一定会使n变为1。 输入n,求最后到达1的步数(不包括n本身)。

  例如
  输入:11
  输出:14
      s=0;
      while(n!=1)//如果满足括号的条件就继续进入循环
      {
          // 循环里面做两件事,对n的改变,和对s加1
             if(n%2==0)
             {
                   改变一下n。 n变为原来的一半
             }
             else
             {
                   改变一下n。 n变为原来的3倍+1
             }
    
             s++;//就是s=s+1,表示增加1步操作
      }
【题意】
  给出一个数x,求x通过角谷猜想变成1需要的操作操作次数
【输入格式】
  输入一个数x
【输出格式】
  输出所需要的次数
【输入样例】
11
【输出样例】
14
 
【练习】
【求最大公约数-辗转相除法】  输入任一的自然数A, B, 求A , B的最小公倍数和最小公约数。
  输入:51 34 输出:17
  之前学过函数版,现在学习一下while实现的非函数版

#include<cstdio>
using namespace std;
int main() 
{
	int a,b,t;
	scanf("%d%d",&a,&b);
	while(a!=0) 
	{
		t=a;
		a=b%a;
		b=t;
	}

	printf("%d\n",b);

	return 0;
}

HINT

 

Source/Category