# Math# Circular Array

a518 - 12468 - Zapping

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算從一個頻道切換到另一個頻道所需的最少按鈕次數,只有向上和向下切換頻道兩個按鈕,頻道總數為 100,頻道號碼循環。

解題思路

由於頻道是循環的,因此從 a 切到 b 可以選擇兩種方式:向上切換或向下切換。向上切換的次數為 (b - a + 100) % 100,向下切換的次數為 (a - b + 100) % 100。取這兩種方式的最小值即可得到最少按鈕次數。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int main(){
	int a,b;
	int min1,min2;
	while(cin >> a >> b){
		if(a>=0&&b>=0){
			if(a-b<0)
				min1=a-b+100;
			else 
				min1=a-b;
			if(b-a<0)
				min2=b-a+100;
			else
				min2=b-a;
			if(min1<=min2)
				cout << min1 << endl;
			else
				cout << min2 << endl;
		}
	}
	
}

Discussion