2023. 9. 1. 14:30γCoding Test/BOJ
πλ¬Έμ 보λ¬κ°κΈ°
π§π»π»νμ΄ κ³Όμ
μ²μ λ¬Έμ λ₯Ό λ΄€μ λλ λ¬Έμ κ° μνλ κ² λκΈΈλ μ€λ² 1μΌκΉ μκ°νλλ°, μ£Όμ΄μ§ μ«μ λ²μκ° λͺ¨λ μ΅λ 2,147,483,647μ΄λκ΅°μ... μ¦, \(O(n)\) μκ³ λ¦¬μ¦μΌλ‘ μμ±νκ² λλ©΄ μ΅λ 2,147,483,647(21μ΅) λ² λκΈ° λλ¬Έμ, μκ° λ΄λ‘ μ λ λͺ» ν΅κ³Όν©λλ€.
\( O(logN) \) μ λλ λμ΄μΌ ν μ μμν λ°, μ΄λ»κ² ν κΉ νλ€κ° μ λ 2κ°μ© λ¬Άλ λ°©λ²μ μ ννμμ΅λλ€.
2κ°μ© λ¬Άκ² λλ©΄, λ€μ λ κ°μ§ μν©μ μ§λ©΄νκ² λ©λλ€.
- Bκ° μ§μμΌ κ²½μ° \( \rightarrow \) λ¨λ κ² μμ΄ λͺ¨λ λ¬Άμ΄λ―λ‘ κ·Έλλ‘ μ§ν
- Bκ° νμμΌ κ²½μ° \( \rightarrow \) 1κ°κ° λ¨μΌλ―λ‘, λ³λλ‘ κ³±ν΄μ£ΌκΈ°
κ°λ Ή 6μ 11λ² κ±°λμ κ³±ν΄μΌ νλ μν©μ μμλ‘ λ€μ΄λ³΄κ² μ΅λλ€.
6 6 6 6 6 6 6 6 6 6 6
6μ λ κ°μ© λ¬ΆμΌλ©΄ μ΄ 5κ°λ‘, 6μ΄ νλκ° λ¨λ μν©μ΄ λ©λλ€.
(6 6) (6 6) (6 6) (6 6) (6 6) 6
μ¦, \( 6 \times 6 = 36 \)μ΄ 5κ°κ° μκΈ°κ² λ©λλ€. νλ λ¨μ 6μ λ³λλ‘ κ³±ν΄μ£ΌκΈ°λ‘ νκ³ , 36μ λ€μ λ κ°μ© λ¬Άμ΅λλ€.
κ·Έλ¬λ©΄ \( 36 \times 36 = 1296 \)μ΄ 2κ°κ° μκΈ°κ² λκ³ , 36μ΄ νλ λ¨κ² λ©λλ€.
(1296) (1296) 36
λ§μ°¬κ°μ§λ‘ 36λ λμ€μ λ³λλ‘ κ³±ν΄μ£ΌκΈ°λ‘ νκ³ , λ€μ 2κ°μ© λ¬Άμ΄λ³΄κ² μ΅λλ€.
2κ° λ¨μμΌλ―λ‘ 1κ°λ°μ μμ±λμ§ μμ΅λλ€.
1679616
μ΄ μ«μμ μκΉ λ³λλ‘ λ¨μλ 6, 36μ κ³±ν΄μ£Όλ©΄ κ±°λμ κ³± μ΅μ’ κ²°κ³Όκ° λμ€κ² λ©λλ€.
1679616 * 6 * 36
λ¬Όλ‘ μ€λ²νλ‘μ°κ° λμ§ μλλ‘, μ€κ° μ°μ° κ³Όμ λ§λ€ % Cλ₯Ό ν΄μ£Όλ κ²μ μμ§ λ§μμΌ ν©λλ€.
μ΄λ¬ν κ³Όμ μ λ°λ³΅νμ¬ λ΅μ ꡬν μ μμ΅λλ€.
βοΈμμ€ μ½λ λ° κ²°κ³Ό
#include <iostream>
#include <vector>
#define FAST_IO ios::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL);
using namespace std;
using uint64 = unsigned long long;
uint64 Pow(uint64 A, int B, const int C)
{
if (B <= 1)
return A % C; // (A:4, B:1, C:2)μ κ°μ μ
λ ₯λ μ‘΄μ¬νλ―λ‘
int numCount = B / 2;
int mod = B % 2;
uint64 square = (A * A) % C;
uint64 modNum = (mod == 0) ? 1 : A;
return (modNum * Pow(square, numCount, C)) % C;
}
int main()
{
FAST_IO
int A, B, C;
cin >> A >> B >> C;
uint64 answer = Pow(A, B, C);
cout << answer;
return 0;
}
'Coding Test > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] 13335λ² | νΈλ (C++) (0) | 2023.09.04 |
---|---|
[BOJ] 1654λ² | λμ μλ₯΄κΈ° (C++) (0) | 2023.09.02 |
[BOJ] 1780λ² | μ’ μ΄μ κ°μ (C++) (0) | 2023.08.31 |
[BOJ] 1992λ² | μΏΌλνΈλ¦¬ (C++) (0) | 2023.08.31 |
[BOJ] 2630λ² | μμ’ μ΄ λ§λ€κΈ° (C++) (0) | 2023.08.31 |