https://www.acmicpc.net/problem/9506
사실 약수같은 경우 제공되는 수의 root값 까지만 판별해주면 돼서 크게 어렵지 않죠
근데 어떻게 더해지는지 출력하는건 좀 귀찮은 부분이긴 합니다.
그래서 저는 vector로 때려넣고 sort() 사용해서 쉽게쉽게 갔습니다.
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int numN;
int sum;
while(1){
sum = 1;
vector<int> vec = {1};
cin >> numN;
if(numN == -1){break;}
for(int i = 2; i< sqrt(numN); i++){
if(numN % i == 0){
vec.push_back(i);
vec.push_back(numN/i);
sum += i;
sum += numN/i;
}
}
if(sum != numN){
cout << numN << " is NOT perfect.";
}
else{
sort(vec.begin(),vec.end());
cout << numN << " = " << vec[0];
for(int i=1; i<vec.size(); i++){
cout << " + " << vec[i];
}
}
cout << endl;
}
}
이젠 검색없이 STL 쓰는법을 좀 익혀야 하는데 마음처럼 쉽지는 않네요.
< 백준 BaekJoon : 7785번 회사에 있는사람> C++ (0) | 2023.08.04 |
---|---|
< 백준 BaekJoon : 19532번 수학은 비대면강의입니다.> C++ (0) | 2023.08.04 |
< 백준 BaekJoon : 2903번 중앙 이동 알고리즘> C++ (0) | 2023.08.02 |
< 백준 BaekJoon : 11005번 진법변환 2> C++ (0) | 2023.08.01 |
< 백준 BaekJoon : 2563번 색종이> C++ (0) | 2023.07.31 |
댓글 영역