2012年12月23日 星期日

11032 - Function Overloading


多載(Overloading)代表同樣的事物被運用在不同的用途上。在 C++ 裡允許函式多載,這意味著我們函數可以使用相同的名稱但做很不一樣的工作。

考慮兩個相同名字的函數,但有不同的參數如下:

int fun(int a, int b) {
  int ans = 0;
  int i, j, cnt;
  for(i=a; i<=b; i++) {
    cnt = 0;
    for(j=1; j<=i; j++) {
     if( j + sod(j) == i ) cnt++;
    }
    if( cnt == 0 ) ans++;
  }
  return ans;
}

int fun(int a) {
  int i;
  for(i=1; i<=a; i++){
    if( i + sod(i) == a ){
      return i;
    }
  }
  return -1;
}

其中,sod(n) = 數字 n 每個位數之和
因此,
sod(13) = 1 + 3 = 4
sod(204) = 2 + 0 + 4 = 6

輸入

輸入的第一行有一整數,代表接下來的測試資料組數。每組測資都會在一行內,這一行可能有一個整數或是兩個整數,所有的整數都會在 [1, 10000000] 的範圍內。

測試資料組數不會超過 1000。

如果輸入有兩個整數,就會呼叫第一個函式;如果只有一個整數,就會呼叫第二個函式,對應的整數將會傳到對應的參數上。

輸出

對於每組測資,首先輸出測資的編號,接著輸出對應函式的回傳值。

範例輸入

3
101
1 9
20

範例輸出

Case 1: 91
Case 2: 5
Case 3: -1


ProblemSetter: Sohel Hafiz
Special Thanks: Jane Alam Jan