テストコード|(c++)標準2588:乗算


に質問


(三桁)× (3桁)次の手順で実現します.

(1)と(2)の位置の3桁の自然数が与えられた場合、(3)、(4)、(5)、(6)の位置の値を求めるプログラムを作成します.
質問の表示

🎹入力


1行目には(1)位置の3桁の自然数、2行目には(2)位置の3桁の自然数が与えられる.

📢しゅつりょく


(3)、(4)、(5)、(6)の値を1行目から4行目に順次出力します.

ほどく

#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;
}
以前の問題に比べて、難しいのは難しいが、簡単で簡単だ.
コアは10個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 ...

参考資料とサイト(ありがとうございます)

  • https://www.acmicpc.net/problem/2588