
3 2 10 20
1 8 22
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int T,N,i,Sum;
double M;
cin>>T;
while (T--)
{
cin>>N;
M=sqrt((double)N); //优化程序
Sum=1;
for (i=2; i<=M; i++)
{
if (N%i==0&&i*i!=N)
Sum+=(i+N/i);
else if (N%i==0)
Sum+=i;
}
cout<<Sum<<endl;
}
return 0;
}
解题思路:
简单却也坑人,题目要求很容易就理解了。最关键的一步就是优化的那一步,不然就会时间超限,可见优化是多么重要,
原文:http://blog.csdn.net/liuchang54/article/details/43936639