반복문 1개로 푼 코드가 있다. 숫자 제한이 작아서 완전 제곱수를 찾아가며 개수를 셌다.
#include <bits/stdc++.h>
using namespace std;
int m, n, i = 1, cnt;
vector<int> v;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> m >> n;
while(i * i <= n){
if(i*i >= m) {
cnt++; v.push_back(i*i);
}
i++;
}
if(v.size()==0) cout << -1;
else cout << accumulate(v.begin(), v.end(), 0) << '\n' << v[0];
return 0;
}
두 번째는 완전 제곱수를 미리 찾아두고 시작한 코드다.
#include <bits/stdc++.h>
using namespace std;
int m, n, total_sum;
int minnum= 1e9;
int arr[100001];
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> m >> n;
int num = 1;
while(num * num <= n){
arr[num * num] = 1;
num++;
}
for(int i = m; i <= n; i++){
if(arr[i]) {
total_sum += i;
minnum = min(minnum, i);
}
}
if(total_sum == 0) cout << -1;
else cout << total_sum << '\n' << minnum;
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
뱀과 사다리 게임 백준 16928번 c++ (0) | 2022.03.02 |
---|---|
조합 백준 2407번 c++ (0) | 2022.03.02 |
30 백준 10610번 c++ (0) | 2022.02.28 |
분수찾기 백준 1193번 c++ (0) | 2022.02.25 |
잃어버린 괄호 백준 1541번 c++ (0) | 2022.02.24 |