728x90
반응형

분수찾기

 

문제

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

1/1 1/2 1/3 1/4 1/5
2/1 2/2 2/3 2/4
3/1 3/2 3/3
4/1 4/2
5/1

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

출력

첫째 줄에 분수를 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
#include <stdio.h>
#include <string.h>
#define true 1
 
int main()
{
    //1 2 3 4 5 6 7  8 9 10 ...
    //1 3 6 10 15 21
    /*
    1-1
    2-1+2  ->
    3-1+2+3  <- 
    4-1+2+3+4  ->
    5-1+2+3+4+5  <-
    
    */
    int x;
    scanf("%d",&x);
    int line=1;
    while(true){
        if(((line-1)*(line))/2 < x && x<=((line)*(line+1))/2){
            break;
        }
        line++;
    }
    int temp = ((line)*(line+1))/2;
    if(line%2 == 0 ){
        
        printf("%d/%d",line-(temp-x),temp-x+1);
    }else{
        printf("%d/%d",temp-x+1,line-(temp-x));
        
    }
    return 0;
}
cs

 

입력받은  x가 몇번째 대각선 라인에 위치해 있는지 아는게 우선이다.

라인 별로 1,2,3,4,5,6,7,8.... 로 하나씩 늘어나기 때문에

x가 위치하는 라인은 ((line-1)*(line))/2 < x && x<=((line)*(line+1))/2) 을 만족해야 한다.

line 을 찾았다면

line 이 짝수냐 홀수냐에 따라서 지그재그 방향이 달라진다

짝수 라인은 오른쪽 방향으로, 홀수 방향은 왼쪽 방향으로 진행하기 때문에

각 라인 최대값 기준으로 x의 위치를 결정하면 된다.

 

반응형
728x90
반응형

 

달팽이는 올라가고 싶다 성공다국어

문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <math.h>
 
int main()
{
    int A,B,V;
    
    scanf("%d %d %d",&A,&B,&V);
    int  day = (V-B-1)/(A-B) + 1;
    //printf("%d",day);
    printf("%d",day);
    return 0;
}
cs

V는 나무 막대의 길이

A는 올라가는 길이, B는 내려오는 길이

즉 하루에 올라가는 길이는 A-B 이다. (A>B)

 

나무 막대의 꼭대기에 도착하기 전날,

달팽이는 최대 V-B 미만의 높이에 올랐을 것이다.

(V-B에는 절대 도달했을 수 없다 왜냐하면 V에서 B만큼 내려와야 되는데,

꼭대기에 도착하기 전날이므로, V에는 도달하지 못한 날이기 때문이다.)

 

따라서 달팽이가 꼭대기에 올라가는 데 걸리는 일수 가day 라면

day < (V-B)/(A-B) 이다. (달팽이가 V-B 만큼 가지 못했기 때문)

 

올림을 사용할 수 있겠지만, 

A,B,V가 정수라는 점을 이용하여

달팽이가 오른 높이를 V-B-1 이라 하고, 마지막에 1을 더해줌(도착한 날)으로서 

식을 완성할 수 있다. 

반응형

'백준 단계별로 풀어보기 > 기본 수학 1' 카테고리의 다른 글

백준 10757 큰 수 A+B  (0) 2022.10.23
백준 2839 설탕 배달  (1) 2022.10.07
백준 10250 ACM 호텔  (1) 2022.10.05
백준 2775 부녀회장이 될테야  (1) 2022.10.05
백준 1193 분수찾기  (0) 2022.10.04

+ Recent posts