C언어

[백준] 2588번 : 곱셈 c언어

jayoon 2021. 8. 27. 22:48

처음에 이 문제를 만나서 당황했다.

 

비트 연산인가..? 3*100 + 8 * 10 + 5 * 1 이렇게 나눠서 하는건가? 등등 고민하다가 결국 간단하게 연산자로 풀 수 있다는 것을 깨달았다.

정답은 가까이에..
#include <stdio.h>
int main(void) {
    int a, b;
    int one, ten, hundred;
    scanf("%d%d", &a, &b);
    hundred = b / 100;
    ten = (b % 100) / 10;
    one = (b % 100) % 10;
    printf("%d\n", a * one);
    printf("%d\n", a * ten);
    printf("%d\n", a * hundred);
    printf("%d\n", a * b);
    return 0;
}

int형 변수 one, ten, hundred는 각각 1의 자리, 10의 자리, 100의 자리에 있는 수를 뜻한다.

난 scanf 함수로 뒤에 입력 받을 변수 b의 값을 분해하여 각각 a에 출력된 값을 출력할 생각이다.

정수끼리의 나눗셈은 몫이 나오는 것을 이용하고, 나머지 연산은 정수끼리만 정의되어 있으니 이 성질을 잘 이용하면 각 자리의 수를 구할 수 있다.

 

그렇게 출력 예시에 맞게 printf 함수에 인자로 넣어주고, 변환문자 %d로 원하는 값을 출력하게 된다.