题目描述
c++的运算速度是有限的,如果你直接算,他就会超时,算不了,因此要优化
你是真的搞不明白优化
现在搞明白了:
对于一个数,你知道了它的一个因数就可以求出另一个因数
(例如,12,你知道了2,那就可以用12/2找到6)
样例
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int x,y,s=0;
cin>>x;
for(int i=1;i*i<x;i++)
if(x%i==0) //找到i
{
if(i<x) s+=i; //先加上i
if(i!=x&&x/i<x) s+=x/i; //再加上和i成对的另一个约数
}
if(x==s) cout<<x<<" is perfect"<<endl;
else cout<<x<<" is not perfect"<<endl;
}
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla