๐Ÿ• Baaaaaarking/0x0B๊ฐ• - ์žฌ๊ท€

[BOJ S1][C++] ๋ฐฑ์ค€ 1629๋ฒˆ: ๊ณฑ์…ˆ

์„ ๋‹ฌ 2022. 5. 4. 07:28
๋ฐ˜์‘ํ˜•

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;
}

/*
 */

 

์กฐ๊ธˆ.. ๋งŽ์ด ์–ด๋ ค์› ๋‹คใ… ใ… 

์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ์ผ๋‹จ ์ง๊ด€์ ์œผ๋กœ ๋‚ฉ๋“ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์„œ..

๊ณต๋ถ€ ๋งŽ์ด ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค

๋ฐ˜์‘ํ˜•