# 題目: UVa 11728 - Alternate Task
# 題目說明
給一個正整數N,代表某數的因數和,求某數
INPUT:
每筆測資輸入一個整數N
當N = 0時結束
OUTPUT:
輸出一個因數和剛好為N的正整數
若無則輸出-1
# 解題方法
使用unordered_map建表,將1 ~ 1000的因數和計算出來,再查表輸出答案即可
# 參考程式碼
#include <iostream>
#include <unordered_map>
using namespace std;
static auto fast_io = []
{
ios::sync_with_stdio(false);
cout.tie(nullptr);
cin.tie(nullptr);
return 0;
}();
int main()
{
unordered_map<int, int> M;
int N, cnt = 0;
for (int i = 1; i <= 1000; ++i)
{
int sum = 0;
for (int j = 1; j <= i; ++j) if (i % j == 0) sum += j;
M[sum] = i;
}
while (cin >> N, N)
{
cout << "Case " << ++cnt << ": " << (M[N] ? M[N] : -1) << "\n";
}
}