[Baekjoon/λ°±μ€][3052][C/C++] λλ¨Έμ§
γλͺ©μ°¨γ
0. κ°μ
1. λ¬Έμ
2. νμ΄
3. μ½λ
0. κ°μ
μν, μ¬μΉμ°μ° λ¬Έμ . λ°λ‘ λ¬Έμ νμ΄λ‘ λμ΄κ°κ² λ€.
1. λ¬Έμ
https://www.acmicpc.net/problem/3052
[λ¬Έμ ]
λ μμ°μ Aμ Bκ° μμ λ, A%Bλ Aλ₯Ό Bλ‘ λλ λλ¨Έμ§ μ΄λ€. μλ₯Ό λ€μ΄, 7, 14, 27, 38μ 3μΌλ‘ λλ λλ¨Έμ§λ 1, 2, 0, 2μ΄λ€.
μ 10κ°λ₯Ό μ λ ₯λ°μ λ€, μ΄λ₯Ό 42λ‘ λλ λλ¨Έμ§λ₯Ό ꡬνλ€. κ·Έ λ€μ μλ‘ λ€λ₯Έ κ°μ΄ λͺ κ° μλμ§ μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
[μ λ ₯]
첫째 μ€λΆν° μ΄λ²μ§Έ μ€ κΉμ§ μ«μκ° ν μ€μ νλμ© μ£Όμ΄μ§λ€. μ΄ μ«μλ 1,000λ³΄λ€ μκ±°λ κ°κ³ , μμ΄ μλ μ μμ΄λ€.
[μΆλ ₯]
첫째 μ€μ, 42λ‘ λλμμ λ, μλ‘ λ€λ₯Έ λλ¨Έμ§κ° λͺ κ° μλμ§ μΆλ ₯νλ€.
[μμ μ λ ₯ 1]
1
2
3
4
5
6
7
8
9
10
[μμ μΆλ ₯ 1]
10
κ° μλ₯Ό 42λ‘ λλ λλ¨Έμ§λ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10μ΄λ€.
[μμ μ λ ₯ 2]
42
84
252
420
840
126
42
84
420
126
[μμ μΆλ ₯ 2]
1
λͺ¨λ μλ₯Ό 42λ‘ λλ λλ¨Έμ§λ 0μ΄λ€.
[μμ μ λ ₯ 3]
39
40
41
42
43
44
82
83
84
85
[μμ μΆλ ₯ 3]
6
κ° μλ₯Ό 42λ‘ λλ λλ¨Έμ§λ 39, 40, 41, 0, 1, 2, 40, 41, 0, 1μ΄λ€. μλ‘ λ€λ₯Έ κ°μ 6κ°κ° μλ€.
2. νμ΄
42λ‘ μ΄λ€μλ₯Ό λλ λλ¨Έμ§λ 0~41 μ¬μ΄μ μ‘΄μ¬νλ€. ∴ λλ¨Έμ§μ ν΄λΉνλ κ°μ 체ν¬ν μ μλ λ°°μ΄ remainderλ₯Ό μ μΈν λ€, 0μΌλ‘ μ΄κΈ°ννκ³ , λλ¨Έμ§μ κ°μλ₯Ό μΈμ΄μ€λ€. μ΄λ, λ°°μ΄μ κ°μ΄ 1μ΄μμΈ κ²μ κ°μλ₯Ό μΈμ΄μ£Όλ©΄, μλ‘ λ€λ₯Έ λλ¨Έμ§ κ°μ΄ λͺ κ° μλμ§λ₯Ό μ μ μλ€.
3. μ½λ
#pragma warning (disable:4996)
#include <stdio.h>
#include <stdbool.h>
int main(int argc, char* argv[]) {
int input;
bool remainder[42]={}; //λλ¨Έμ§μ ν΄λΉνλ κ° μ²΄ν¬.
/* μλ‘ λ€λ₯Έ λλ¨Έμ§ κ°μ μΈκΈ° */
for (int i = 0; i < 10; i++) {
scanf("%d", &input);
input %= 42;
remainder[input] = true;
}
/* μΆλ ₯ */
int count = 0;
for (int i = 0; i < 42; i++)
if (remainder[i] == true) count++;
printf("%d", count);
/* λ§λ¬΄λ¦¬ */
return 0;
}