uva 11728——Alternate Task

题意:及其无聊的一道题目,以前做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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值