3221 - 角谷猜想

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

 【问题描述】

<span style="font-family:宋体;color:black;font-size:12pt;">在数学上,有一个称为角谷猜想<span>(</span>最早由日本数学家角谷静夫提出<span>)</span>的经典题,其内容是:“对任意的正整数<span>n</span>,若为偶数,则把它除以<span>2</span>,若为奇数,则把它乘以<span>3</span>加<span>1</span>。经过如此有限次运算后,总可以得到正整数值<span>1</span>”。<span></span></span>

<span style="font-family:宋体;color:black;font-size:12pt;">请你编一个程序,根据输入的正整数<span>n</span>,输出以上运算过程。<span></span></span>

<span style="font-family:宋体;color:black;font-size:12pt;">【输入格式】<span></span></span>

<span style="font-family:宋体;color:black;font-size:12pt;">输入数据仅一行包含一个正整数<span>n(2</span>≤<span>n</span>≤<span>100)</span>。<span></span></span>

<span style="font-family:宋体;color:black;font-size:12pt;">【输出格式】<span></span></span>

<span style="font-family:宋体;color:black;font-size:12pt;">一行输出一次运算的算式,算式中除了运算符号、等号及数字以外不包含其它任何字符。<span></span></span>

<span style="font-family:宋体;color:black;font-size:12pt;">【输入样例】</span>

<span style="font-family:宋体;color:black;font-size:12pt;"></span><span style="font-family:宋体;color:black;font-size:12pt;">3</span>

<span style="font-family:宋体;color:black;font-size:12pt;">【输出样例】</span>

<span style="font-family:宋体;color:black;font-size:12pt;">3*3+1=10</span>

<span style="font-family:宋体;color:black;font-size:12pt;">10/2=5</span>

<span style="font-family:宋体;color:black;font-size:12pt;">5*3+1=16</span>

<span style="font-family:宋体;color:black;font-size:12pt;">16/2=8</span>

<span style="font-family:宋体;color:black;font-size:12pt;">8/2=4</span>

<span style="font-family:宋体;color:black;font-size:12pt;">4/2=2</span>

<span style="font-family:宋体;color:black;font-size:12pt;">2/2=1</span><b><span style="font-family:宋体;font-size:12pt;"></span></b>

题目输入

题目输出

输入/输出样例

输入格式


                        

输出格式


                        

C++解答

#include <cstdlib>
#include <cstdio>
using namespace std;
bool even(long long);
int main()
{
	long long  n;
	long long c=0;
	long long k;
	scanf("%lld",&k);
	while(k!=1)
	{
		if(even(k)==false)
		{
			long long  a=3*k+1;
			printf("%lld*3+1=%lld\n",k,a);
            k=a;
		}
		else
		{
			long long a=k/2;
			printf("%lld/2=%lld\n",k,a);
			k=a;
		}
	}
	//system("pause");
	return 0;
}
bool even(long long a)
{
	if(a%2==0)
	    return true;
	else
		return false;
}