(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
문제 보기
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
#include<iostream>
// std 네임스페이스 스코프를 생략하고 사용한다는 의미
using namespace std;
int main()
{
int a = 0, b = 0;
cin >> a >> b;
int digits[3];
// 두번째 숫자의 1의자리를 구한다.
digits[0] = b % 10;
// 10의 자리를 구한다.
digits[1] = (b % 100) / 10;
// 100의 자리를 구한다.
digits[2] = b / 100;
int result[4];
// (3) 구하기 : 두번째 숫자의 일의자리를 첫번째 숫자와 곱한다.
result[0] = a * digits[0];
// (4) 구하기 : 두번째 숫자의 십의자리를 첫번째 숫자와 곱한다.
result[1] = a * digits[1];
// (5) 구하기 : 두번째 숫자의 백의자리를 첫번째 숫자와 곱한다.
result[2] = a * digits[2];
// (6) 구하기 : 첫번째 숫자 a와 두번째 숫자 b를 곱한다.
result[3] = a * b;
const int length = sizeof(result) / sizeof(int);
for (int i = 0; i < length; i++)
{
cout << result[i] << '\n';
}
return 0;
}
이전 문제들에 비하면, 어렵다면 어렵고 쉽다면 쉬운 문제!
핵심은 1의자리 10의자리 100의 자리를 구하는건데
나의 경우
1의자리는 10으로 나누어떨어져서 나오는 값 0~9
끝
10의 자리는 100으로 나누어지는 값 0~99에 10으로 나눈다
100의 자리는 100으로 나누면
끝
여기서 처음에 10의 자리는 왜 10으로 나누면 안되나? 라는 의문이 들 수도 있다.
근데 10으로 나누게되면 10보다 큰 수 까지 포함된다는 사실을 잊지 말아야 한다.
즉 100의자리까지 포함된다구!!
int array[배열 길이]; // 배열의 길이는 상수만 입력할 수 있다(const)
// 0번째 인덱스 부터 지정한 숫자까지 대입되고 나머지는 0으로 초기화 됨
int cat[3] = { 0, 1 }; // cat[0] = 0, cat[1] = 1, cat[2] = 0
// 0번째 인덱스 부터 마지막 인덱스까지 0으로 모두 초기화 됨
int dog[5] = { }; // dog[0] = 0, dog[1] = 0 ...
참고 자료 및 사이트 (감사합니다)