您的位置:首页 > 其它

uva 11728——Alternate Task

2015-10-26 17:08 246 查看
题意:及其无聊的一道题目,以前做STl专题的时候,曾经做过一道求一个数的所有约数之和的题目,该题和那道题刚好相反,是给你一个数的约数之和,问这个数可能是多少!

题目:还能咋办,直接打表筛一遍就ok了,先打一张所有数的因数之和的表,然后来一个,查一下表就行了,水题!

code:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;

const int N=1005;
vector<int>v(N,0);

void init() //自以为打的很好一张表,优于教材的算法
{
int n,m,i,j,sum;
for(i=1;i<N;i++)
for(j=1;i*j<N;j++)
v[i*j]+=i;
}
int cal (int n)
{
for (int i=n;i>=1;i--)
if (v[i]==n)
return i;
return -1;
}
int main()
{
init();
int n,ca=1;
while (~scanf("%d",&n)&&n)
printf("Case %d: %d\n",ca++,cal(n));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: