iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
自我挑戰組

cpe30天練習系列 第 8

cpe練習day8

  • 分享至 

  • xImage
  •  

今天是用c++寫之前寫過的The 3n+1 problem
###程式碼

#include <iostream>
using namespace std;
 
int main() 
{
    int i, j;
    while(cin >> i >> j)
    {
    	int x=0;
    	for(int m = min(i, j) ; m <= max(i, j) ; m++)
    	{
    		int total=1;
    		int m1=m;
    		while(m1!=1)
			{	
    			if(m1%2)
    			{
    				m1=3*m1+1;
				}
				else
				{
					m1=m1/2;
				}
				total++;
			}
			x = max(x, total);
		}
		cout << i << " "<< j << " " << x << endl;
	}
    return 0;
}
  • while(cin >> i >> j):不斷讀取兩個整數,直到遇到 EOF(輸入結束)
  • x 用來記錄範圍 [min(i,j), max(i,j)] 內的 最大循環長度
  • 用 for 迴圈從較小的數字開始計算到較大的數字
  • total 記錄目前數字的循環長度(初始化為1,因為要包含自己)
  • m1 = m複製一份當前數字,避免直接改動m值

上一篇
cpe練習day7
下一篇
cpe練習day9
系列文
cpe30天練習10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言