解题思路: 因为题目说的是10的9次方要用开根号法 因为约数是成对出现的 所以可以看做如果这个数不是完全平方数 就是ii<=sqrt(n)时(sqrt即为开根号) 如果n%i==0 ans+=i; ans+=n/i; 如实完全平方数 减去sqrt(n)
#include<bits/stdc++.h> using namespace std; int main(){ int n,s; cin>>n; s=0; for( int i=1;i*i<=n;i++){ if(n%i==0)s=s+i+n/i; if(i*i==n)s=s-i; } cout<<s<<endl; return 0; }
注册一个 CZOJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 CZOJ 通用账户