알고리즘 연습/백준
[C++][수학1 - 분수찾기(1193)]
_h.j
2020. 8. 17. 11:15
728x90
[소스 코드]
#include <iostream>
using namespace std;
int main(void){
int x,line=1,result=0;
cin >> x;
while ((line) * (line + 1) / 2 < x)
line++;
result = x - line * (line - 1) / 2;
if (line % 2 == 1)
cout <<line+1-result<<"/"<< result;
else
cout << result << "/" << line + 1 - result;
return 0;
}
[풀이 방법]
1.먼저 x가 해당하는 line을 구한다.
구하는 방법은 line 까지의 합을 구해서 푼다.
(while의 부등호 조심)
2. 해당 라인의 숫자 합(A/B에서 A+B)은 line+1 이다.
3. x가 해당 라인에서 몇 번째 칸인지 구한다.
x에서 1~line-1 까지의 합을 뺸다.
4. 홀수는 라인의 하단 부터 출력하고 짝수는 상단부터 출력하므로
line의 짝홀을 판단한다.
[다른 사람 풀이]
비슷하다.
728x90