세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427 이라면
A × B × C = 150 × 266 × 427 = 17037300 이 되고,
계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.
첫째 줄에 A 둘째 줄에 B 셋째 줄에 C가 주어진다.
A B C는 모두 100보다 같거나 크고 1 000보다 작은 자연수이다.
첫째 줄에는 A×B×C의 결과에 0 이 몇 번 쓰였는지 출력한다.
마찬가지로 둘째 줄부터 열 번째 줄까지 A×B×C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지
차례로 한 줄에 하나씩 출력한다.
[Copy]
150
266
427 |
[Copy]
3
1
0
2
0
0
0
2
0
0 |
이전 문제의 응용판이라고 할 수 있는 문제네요. 이전 문제를 해결했다면 쉽게 풀 수 있을 듯 합니다.
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
37
38
39
40
41
42
43
44
45 |
#include <iostream>
using namespace std;
// 숫자를 세 줄 함수
void CountNumber(int mult, int *result);
int main(void)
{
// n: 입력 받을 변수, mult: 곱할 변수
int n, mult = 1;
// 결과를 0~9까지가 몇 번 나왔는지 저장할 배열
int result[10];
// 결과를 0으로 초기화 한다.
for (int i = 0; i < 10; ++i)
result[i] = 0;
// 세번 입력 받으며 곱한다.
for (int i = 0; i < 3; ++i)
{
cin >> n;
mult *= n;
}
CountNumber(mult, result);
// 결과 출력
for (int i = 0; i < 10; ++i)
cout << result[i] << endl;
}
// 숫자를 10으로 나눈 나머지(1의자리)의 숫자에 따라 배열의 값 증가
// 모든 자리를 확인하면 종료
void CountNumber(int mult, int *result)
{
while (true)
{
result[mult % 10]++;
mult /= 10;
if (mult == 0)
return;
}
}
|
cs |
JUNGOL) 문제은행) 실력키우기) 숫자의 개수