[BOJ S1][C++] ๋ฐฑ์ค 1629๋ฒ: ๊ณฑ์
https://www.acmicpc.net/problem/1629
1629๋ฒ: ๊ณฑ์
์ฒซ์งธ ์ค์ A, B, C๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. A, B, C๋ ๋ชจ๋ 2,147,483,647 ์ดํ์ ์์ฐ์์ด๋ค.
www.acmicpc.net
๋ฌธ์
์์ฐ์ A๋ฅผ B๋ฒ ๊ณฑํ ์๋ฅผ ์๊ณ ์ถ๋ค. ๋จ ๊ตฌํ๋ ค๋ ์๊ฐ ๋งค์ฐ ์ปค์ง ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ C๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ A, B, C๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. A, B, C๋ ๋ชจ๋ 2,147,483,647 ์ดํ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ A๋ฅผ B๋ฒ ๊ณฑํ ์๋ฅผ C๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์ํ์ฐฉ์ค
์งง๊ณ ๊ฐ๋จํ ๋ฌธ์ ใ ใ
๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ์ฌ ์ฝ๊ฒ ํ์๋คใ ใ
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
ll a,b,c;
cin >> a >> b >> c;
ll val = 1;
while(b--) val = val * a % c;
cout << val;
return 0;
}
/*
*/
์ด๋ฆผ๋์์ง ์๊ฐ์ด๊ณผ~~
์ ๋ ฅ์กฐ๊ฑด์ด ์ด๋ฏธ 20์ต๋.... int ๋ฒ์ ์ด๋ฏธ ๋์ด๋ฒ๋ ธ๋ค
ํ์ด
์กฐ๊ธ ๋ณต์กํ์ง๋ง.. ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์
๊ฐ์ด ๋์ฌ๋๋ง๋ค ๋๋จธ์ง ์ฐ์ฐ์ ๋ฏธ๋ฆฌ ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก
๊ฐ๋ค์ ๊น์๋๋ค (?)
๊ทธ ๊ณ ๋ฑํ๊ต ์ ๊ณฑ ์ฐ์ฐ๋ ๋ฐฐ์ฐ๋ ๊ณต์
a^n * a^n = a^(2n)
์ ์ฌ์ฉํ์๊ณ
b๊ฐ ํ์๊ฑฐ๋ ์ง์์ธ ๊ฒฝ์ฐ๋ง if ์ฐ์ฐ ์ด์ฉํด์ ์ฒ๋ฆฌํด์คฌ๋ค
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
using namespace std;
using ll = long long;
ll func(ll a, ll b, ll c) {
if(b == 1) return a % c;
ll tmp = func(a, b/2, c);
tmp = tmp * tmp % c; // func(a, b, c) ๊ฐ ์ฐ์ฐ๋จ
// b๊ฐ ์ง์๋ฉด ๊ทธ๋๋ก ๋ฆฌํด, ํ์๋ฉด ํ๋ฒ ๋ ๊ณฑํด์ฃผ๊ณ ์ฐ์ฐ
if(b%2 == 1) return tmp * a % c;
else return tmp;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
ll a,b,c;
cin >> a >> b >> c;
cout << func(a,b,c);
return 0;
}
/*
*/
์กฐ๊ธ.. ๋ง์ด ์ด๋ ค์ ๋คใ ใ
์ฌ๊ท ํจ์๋ ์ผ๋จ ์ง๊ด์ ์ผ๋ก ๋ฉ๋ํ๊ธฐ๊ฐ ํ๋ค์ด์..
๊ณต๋ถ ๋ง์ด ํด์ผํ ๊ฒ ๊ฐ๋ค