链接
https://vjudge.net/problem/UVA-11728
题解
一个数的约数的和肯定大于这个数本身的值
因此大于
S
S
S的数没必要算了
代码
//数学题
#include <bits/stdc++.h>
#define maxn 1010
#define ll long long
using namespace std;
ll sigma[maxn], ans[maxn];
void preprocess()
{
ll i, j;
memset(ans,-1,sizeof(ans));
for(i=1;i<maxn;i++)for(j=i;j<maxn;j+=i)sigma[j]+=i;
for(i=maxn-1;i;i--)if(sigma[i]<maxn and ans[sigma[i]]==-1)ans[sigma[i]]=i;
}
int main()
{
ll i, S, kase=0;
preprocess();
while(scanf("%lld",&S),S)printf("Case %lld: %lld\n",++kase,ans[S]);
return 0;
}