#45022: C++解答


xiul024ase55@gmail.com (真理老師)

學校 : 不指定學校
編號 : 293305
來源 : [140.128.102.197]
最後登入時間 :
2025-01-06 17:15:55
e629. 11728 - Alternate Task -- UVA | From: [118.163.199.168] | 發表日期 : 2025-01-02 21:30

關鍵重點:遍歷1-n的值i;把i用根號拆成兩半,個別將i的因數相加乘總和sum,檢查sum是否符合n的值,直接輸出

#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,casenum=1;
while(cin>>n){
if(n==0){
break;
}
cout<<"Case "<<casenum<<": ";
casenum++;
if(n==1){
cout<<"1"<<endl;
continue;
}
int ans=-1;
for (int i=n-1;i>0;i--){
int sum=0;
for (int j=1;j<=sqrt(i);j++){
if(i%j==0){
sum+=j;
if(j*j!=i){
sum+=i/j;
}
}
}
if(sum==n){
ans=i;
break;
}
}
cout<<ans<<endl;
}
}

 
ZeroJudge Forum