π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[BAEKJOON C++] 11575_Affine Cipher λ³Έλ¬Έ
728x90
λ°μν
μμͺ½λλΌμμ νΉμνλ ¨μ λ°μ μ μμ΄λ λμͺ½λλΌλ‘ μΉ¨ν¬λ₯Ό νκ² λμλ€.
λ°μ΄λ μ€νμ΄μλ μ μμ΄λ λμͺ½λλΌμ μ 보λ₯Ό μ μνκ² λμκ³
μ 보λ₯Ό μμ νκ² μμͺ½λλΌλ‘ μ λ¬νκΈ° μν΄ μν μνΈ(Affine Cipher)λ₯Ό μ΄μ©νκΈ°λ‘ νμλ€.
μν μνΈλ λ€μκ³Ό κ°μ μμ ν΅ν΄ ꡬν μ μλ€.
E(X) = (aX + b) mod 26
AλΆν° ZκΉμ§μ μνλ²³μ μ°¨λ‘λλ‘ 0, 1, 2, ... , 25 λΌκ³ νμ.
a = 3μ΄κ³ , b = 1μΈ κ²½μ°μ Aλ₯Ό μν μνΈμμ λμ νλ©΄ E(0) = (3 × 0 + 1) mod 26 μ΄ λμ΄ μνΈνλ κ²°κ³Όλ B
aμ b, κ·Έλ¦¬κ³ μνλ²³ λλ¬Έμλ‘λ§ κ΅¬μ±λ νλ¬Έμ΄ μ£Όμ΄μ‘μ λ,
μ΄λ₯Ό μνΈλ¬ΈμΌλ‘ μΉννλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ λ ₯
μ λ ₯μ 첫 μ€μλ ν μ€νΈ μΌμ΄μ€μ κ°μ T(1 ≤ T ≤ 50) κ° μ£Όμ΄μ§λ€.
κ° ν μ€νΈ μΌμ΄μ€μ 첫 λ²μ§Έ μ€μλ λ μ μ aμ b(0 < a, b ≤ 1,000,000)μ κ°μ΄ μ£Όμ΄μ§λ€.
aλ 26κ³Ό μλ‘μμ΄λ€.
κ° ν μ€νΈμΌμ΄μ€μ λ λ²μ§Έ μ€μλ νλ¬Έ sκ° μ£Όμ΄μ§λ€.
νλ¬Έμ κΈΈμ΄ |s|λ 0λ³΄λ€ ν¬κ³ 1,000,000λ³΄λ€ μλ€.
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€λ§λ€ ν μ€μ ν κ°μ© νλ¬Έ sλ₯Ό μνΈλ¬ΈμΌλ‘ μΉνν κ²°κ³Όλ₯Ό μΆλ ₯νλ€
// [11575] Affine Cipher
/*
μμͺ½λλΌμμ νΉμνλ ¨μ λ°μ μ μμ΄λ λμͺ½λλΌλ‘ μΉ¨ν¬λ₯Ό νκ² λμλ€.
λ°μ΄λ μ€νμ΄μλ μ μμ΄λ λμͺ½λλΌμ μ 보λ₯Ό μ
μνκ² λμκ³
μ 보λ₯Ό μμ νκ² μμͺ½λλΌλ‘ μ λ¬νκΈ° μν΄ μν μνΈ(Affine Cipher)λ₯Ό μ΄μ©νκΈ°λ‘ νμλ€.
μν μνΈλ λ€μκ³Ό κ°μ μμ ν΅ν΄ ꡬν μ μλ€.
E(X) = (aX + b) mod 26
AλΆν° ZκΉμ§μ μνλ²³μ μ°¨λ‘λλ‘ 0, 1, 2, ... , 25 λΌκ³ νμ.
a = 3μ΄κ³ , b = 1μΈ κ²½μ°μ Aλ₯Ό μν μνΈμμ λμ
νλ©΄ E(0) = (3 × 0 + 1) mod 26 μ΄ λμ΄ μνΈνλ κ²°κ³Όλ B
aμ b, κ·Έλ¦¬κ³ μνλ²³ λλ¬Έμλ‘λ§ κ΅¬μ±λ νλ¬Έμ΄ μ£Όμ΄μ‘μ λ,
μ΄λ₯Ό μνΈλ¬ΈμΌλ‘ μΉννλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ
λ ₯
μ
λ ₯μ 첫 μ€μλ ν
μ€νΈ μΌμ΄μ€μ κ°μ T(1 ≤ T ≤ 50) κ° μ£Όμ΄μ§λ€.
κ° ν
μ€νΈ μΌμ΄μ€μ 첫 λ²μ§Έ μ€μλ λ μ μ aμ b(0 < a, b ≤ 1,000,000)μ κ°μ΄ μ£Όμ΄μ§λ€.
aλ 26κ³Ό μλ‘μμ΄λ€.
κ° ν
μ€νΈμΌμ΄μ€μ λ λ²μ§Έ μ€μλ νλ¬Έ sκ° μ£Όμ΄μ§λ€.
νλ¬Έμ κΈΈμ΄ |s|λ 0λ³΄λ€ ν¬κ³ 1,000,000λ³΄λ€ μλ€.
μΆλ ₯
κ° ν
μ€νΈ μΌμ΄μ€λ§λ€ ν μ€μ ν κ°μ© νλ¬Έ sλ₯Ό μνΈλ¬ΈμΌλ‘ μΉνν κ²°κ³Όλ₯Ό μΆλ ₯νλ€
*/
#define _CRT_SECURE_NO_WARNINGS
// νμ€ μ€νΈλ¦Όμμ μ½κΈ° λ° μ°κΈ°λ₯Ό μ μ΄νλ κ°μ²΄λ₯Ό μ μΈ
#include <iostream>
#include <algorithm> // find
#include <string>
#include <cmath> // abs
using namespace std;
int main() {
int T;
cin >> T;
for (int i = 0; i < T; i++) {
int a, b;
string X, newStr;
cin >> a >> b >> X;
// E(X) = (aX + b) mod 26
for (int j = 0; j < X.length(); j++) {
// μμ€ν€μ½λ λ³νν΄μ μμ κ³μ° ν λ€μ λ¬Έμλ‘
int temp = (char)(((a * ((int)X.at(j) - 65) + b) % 26) + 65);
newStr += temp;
}
cout << newStr << "\n";
}
}
728x90
λ°μν
'π¦₯ μ½ν > BAEKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BAEKJOON JAVA] 1264_λͺ¨μμ κ°μ (0) | 2023.07.16 |
---|---|
[BAEKJOON C++] 1453_νΌμλ°© μλ° (0) | 2023.07.15 |
[BAEKJOON C++] 2845_νν°κ° λλκ³ λ λ€ (1) | 2023.07.14 |
[BAEKJOON C++] 4504_λ°°μ μ°ΎκΈ° (0) | 2023.07.14 |
[BAEKJOON C++] 4999_μ! (0) | 2023.07.14 |
Comments