코딩해요/C

[백준/C언어] 일반 수학1 문제풀이

yenas0 2023. 8. 28. 21:35
반응형

 

 

#2745번: 진법 변환

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
 
 
int main(void)
{
    char N[100];
    double B;
    double result = 0;
 
    scanf("%s %lf"&N, &B);
 
    int length = strlen(N);
 
    for (int i = 0; i < length; i++)
    {
        if (N[i] >= 65 && N[i] <= 90)
            N[i] -= 55;
 
        else
            N[i] -= 48;
    }
 
    for (int i = length - 1; i >= 0; i--)
    {
        result += (double)N[i] * pow(B, length - 1 - i);
    }
 
    printf("%d", (int)result);
}
 
cs

 

알파벳 대문자는 아스키 코드값 65부터 90까지 이다. 이 값을 맞추어 주기 위해 알파벳일 경우 55을 빼주고 숫자는 아스키 코드값이 0부터 9가 48부터 차례로 되어 있기 때문에 48을 빼준다.

 

pow함수를 사용해서 제곱 계산을 하고 곱해주는데 이때 N이 char로 되어 있기 때문에 double로 변환한 뒤 계산해주었다.

 

출력은 문제에 결과값과 일치시키기 위해 int로 하였다.

 

B진법 계산은 그냥 이런식으로 하면 된다.. 이 구현 내용이 2번째 for문에 들어간다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#2720번: 세탁소 사장 동혁

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    int N;
 
    int quater, dime, nikel, penny;
 
    int change;
 
    scanf("%d"&N);
 
    for (int i = 0; i < N; i++)
    {
        scanf("%d"&change);
        quater = change / 25;
        dime = (change - (quater * 25)) / 10;
        nikel = (change - (quater * 25 + dime * 10)) / 5;
        penny = change - (quater * 25 + dime * 10 + nikel * 5);
        
        printf("%d %d %d %d\n", quater, dime, nikel, penny);
    }
}
 
cs

 

그냥 큰 단위부터 나눠서 몫을 구하고 다시 남은 값 동일하게 계산하면 되는 문제..

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#2903번: 중앙 이동 알고리즘

 

 

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
 
int main(void)
{
    int N;
 
    double a[16];
 
    a[0= 4;
 
    scanf("%d"&N);
 
    for (int i = 1; i < 16; i++)
    {
        a[i] = pow(2 * sqrt(a[i - 1]) - 12.0);
    }
 
    printf("%d", (int)a[N]);
}
 
cs

 

 

일반항만 구하면 구현하는 건 쉽다.

일반항 계산한 과정은 아래와 같다.

이렇게 규칙성 찾아서 수열의 일반항을 찾았다.

n값이 15까지 였으니까 그냥 배열을 다 만들어서 각각의 배열에 계산한 값을 넣었고 출력할 때에는 원하는 배열 값만 출력 받도록 하였다.

루트는 sqrt함수를 사용했고 제곱은 pow함수로 했다. pow함수로 다 사용해도 되긴하고..

반응형