UVa100:The 3n + 1 problem
2018-02-06 22:07
621 查看
考慮以下的演算法:
1. 輸入 n
2. 印出 n
3. 如果 n = 1 結束
4. 如果 n 是奇數 那麼 n=3*n+1
5. 否則 n=n/2
6. GOTO 2
例如輸入 22, 得到的數列: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
據推測此演算法對任何整數而言會終止 (當列印出 1 的時候)。雖然此演算法很簡單,但以上的推測是否真實卻無法知道。然而對所有的n ( 0 < n < 1,000,000 )來說,以上的推測已經被驗證是正確的。
給一個輸入 n ,透過以上的演算法我們可以得到一個數列(1作為結尾)。此數列的長度稱為n的cycle-length。上面提到的例子, 22 的 cycle length為 16.
問題來了:對任2個整數i,j我們想要知道介於i,j(包含i,j)之間的數所產生的數列中最大的 cycle length 是多少。
#include <stdio.h>
int main()
{
int m, n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int i, final=0, count=0, max, min;
if(m>n)
{
max=m;
min=n;
}
else
{
max=n;
min=m;
}
for(i=min; i<=max; i++)
{
int x;
x=i;
count=0;
while(x!=1)
{
if(x%2==1) x=3*x+1;
else if(x%2==0) x=x/2;
count++;
}
if(count>final) final=count;
}
printf("%d %d %d\n",m,n,final+1);
}
}
1. 輸入 n
2. 印出 n
3. 如果 n = 1 結束
4. 如果 n 是奇數 那麼 n=3*n+1
5. 否則 n=n/2
6. GOTO 2
例如輸入 22, 得到的數列: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
據推測此演算法對任何整數而言會終止 (當列印出 1 的時候)。雖然此演算法很簡單,但以上的推測是否真實卻無法知道。然而對所有的n ( 0 < n < 1,000,000 )來說,以上的推測已經被驗證是正確的。
給一個輸入 n ,透過以上的演算法我們可以得到一個數列(1作為結尾)。此數列的長度稱為n的cycle-length。上面提到的例子, 22 的 cycle length為 16.
問題來了:對任2個整數i,j我們想要知道介於i,j(包含i,j)之間的數所產生的數列中最大的 cycle length 是多少。
#include <stdio.h>
int main()
{
int m, n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int i, final=0, count=0, max, min;
if(m>n)
{
max=m;
min=n;
}
else
{
max=n;
min=m;
}
for(i=min; i<=max; i++)
{
int x;
x=i;
count=0;
while(x!=1)
{
if(x%2==1) x=3*x+1;
else if(x%2==0) x=x/2;
count++;
}
if(count>final) final=count;
}
printf("%d %d %d\n",m,n,final+1);
}
}
相关文章推荐
- UVa 100 - The 3n + 1 problem
- UVa 100 - The 3n + 1 problem
- uva_100 - The 3n + 1 problem
- hdu 1032 && uva 100 The 3n + 1 problem
- UVa 100 / HDU 1032 / POJ 1207 The 3n + 1 problem (数论&Collatz序列周期)
- 100 - The 3n + 1 problem Form UVa OJ
- UVa - 100 - The 3n + 1 problem
- UVA_100: The 3n + 1 problem
- UVA100 The 3n + 1 problem
- UVA100 POJ1207 HDU1032 The 3n + 1 problem【水题】
- uva--100 - The 3n + 1 problem
- UVa - 100 - The 3n + 1 problem
- The 3n + 1 problem UVA - 100
- UVA 100 The 3n + 1 problem
- UVa 100 - The 3n + 1 problem
- uva-100-The 3n + 1 problem
- UVa 100 - The 3n + 1 problem
- uva100 The 3n + 1 problem
- UVa 100-The 3n + 1 problem
- UVa 100 - The 3n + 1 problem