UVa 12468

UVa12468

題目

http://domen111.github.io/UVa-Easy-Viewer/?12468

有一台電視共有 100 臺頻道,由 0~99,並且是環狀的,也就是說我可以從 0 轉到第 99,反之亦同

現在要從頻道 A 轉到頻道 B,每次只能轉一臺,正向或是逆向都可,求最少的轉移數

想法

分別算出正著轉以及逆著轉所需的移動次數,取最小值即可

當我從 0 轉到 99

  1. 正轉
    990=99
  2. 逆轉
    099+100=1

因為是環,所以當我轉到變成負數,只要在加上 100 就可以回到應該到的位置上了

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//By Koios1143
#include<iostream>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b){
if(a==-1 && b==-1)
break;
int forward = b-a;
int reverse = a-b;
if(forward<0)
forward+=100;
if(reverse<0)
reverse+=100;
cout<<min(forward, reverse)<<"\n";
}
return 0;
}

複雜度分析

每筆測資時間複雜度為 O(1)

未找到相關的 Issues

請聯絡 @Koios1143 初始化評論