# 題目: 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";
	}
}