https://www.acmicpc.net/problem/1011
제곱수 몇개를 생각해보면
4 = 1 + 2 + 1
9 = 1 + 2 + 3 + 2 + 1
16 = 1 + 2 + 3 + 4 + 3 + 2 + 1
필요한 거리에서 가장 큰 제곱수를 제외하고
남은 거리에서 필요한 횟수를 계산
#include <iostream>
#include <cmath>
using namespace std;
int isInteger(float num)
{
if (num / 1.00 == (int)num) {
//printf("We have an integer!\n");
return 1;
}
else {
//printf("We don't have an integer!\n");
return 0;
}
}
int main()
{
int T = 0;
cin >> T;
for (int i = 0; i < T; i++)
{
int start = 0;
int end = 0;
cin >> start;
cin >> end;
int count = 0;
float distance = end - start;
float root = sqrt(distance);
//cout << root << endl;
if(isInteger(root)){
cout << root * 2 - 1 << endl;
}else{
int j = floor(root);
distance -= j * j;
if (distance > j) {
cout << j * 2 - 1 + 2 << endl;
}
else {
cout << j * 2 - 1 + 1 << endl;
}
}
}
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준] - Contact - 복습 (0) | 2021.01.31 |
---|---|
[백준] - 유기농 배추 - 복습 (0) | 2021.01.31 |
[백준] - 다리 놓기 - 복습 (0) | 2021.01.31 |
[백준] - 분산처리 - 복습 (0) | 2021.01.30 |
[백준] - 어린 왕자 - 복습 (0) | 2021.01.30 |
댓글