https://www.acmicpc.net/problem/21567
(21.08.07)
21567번: 숫자의 개수 2 - C언어 풀이
[소스코드]
#include <stdio.h>
// [baekjoon] 21567번 - 숫자의 개수 2
int main() {
long long A, B, C;
long long D = 1;
int cnt[10] = { 0 };
scanf("%lld", &A);
scanf("%lld", &B);
scanf("%lld", &C);
D = A * B * C;
while (D > 0) {
int n = D % 10;
cnt[n]++;
D /= 10;
}
for (int i = 0; i < 10; i++) {
printf("%d\n", cnt[i]);
}
}
세 수의 곱을 저장할 D는 long long으로 잘 선언해 놓고,
A, B, C는 int로 선언해서 해맸던 문제..
A, B, C가 int로 선언되어있어서 당연히 계산결과인 A * B * C도 int 범위에서만 저장되니까
계산 결과가 int범위를 넘어서 오버플로(Overflow)가 발생했다.
A, B, C를 int로 두고
D *= A;
D *= B;
D *= C;
로 계산해도 풀리긴 한다.
'학습 정리 > 👨💻 PS Study' 카테고리의 다른 글
[C] 백준 14582번 - 오늘도 졌다 (0) | 2022.07.06 |
---|---|
[C] 백준 11170번 - 0의 개수 (0) | 2022.07.06 |
[C] 백준 21867번 - Java Bitecode (0) | 2022.07.06 |
[C] 백준 11557번 - Yangjojang of The Year (0) | 2022.07.06 |
[C] 백준 21866번 - 추첨을 통해 커피를 받자 (0) | 2022.07.06 |