๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 23977๋ฒˆ - To Find Password

by ์•ˆ์ฃผํ˜• 2022. 3. 10.

๋ฌธ์ œ

 

23977๋ฒˆ: To Find Password

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ K์™€ N์ด ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K < min(Ai), 2 ≤ N ≤ 8) ๋‘˜์งธ ์ค„์— N๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด A์˜ ์›์†Œ๋“ค์ด ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (3 ≤ Ai ≤ 40)

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#define ll long long

using namespace std;


ll gcd(ll a, ll b){
    if(b==0) return a;
    else return gcd(b,a%b);
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    ll N,K; cin>>K>>N;
    
    vector<ll>v;
    for(int i=0; i<N; i++){
        ll num; cin>>num;
        v.push_back(num);
    }
    
    ll num = v[0];
    ll lcm_val = 0;
    
    for(int i=0; i<N; i++){
        lcm_val = (num*v[i]) / gcd(num,v[i]);
        num = lcm_val;
    }
    cout<<num-K;
    
}

 

ํ’€์ด

์ผ๋‹จ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ์‚ดํŽด๋ณด๋ฉด ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ •์ˆ˜ K์™€ ์ •์ˆ˜ N๊ฐœ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด A๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐฐ์—ด A์˜ ์›์†Œ๋“ค๋กœ ๊ฐ๊ฐ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, ๋‚˜๋ˆ„๋Š” ์ˆ˜์™€ ๊ทธ ๋‚˜๋จธ์ง€์˜ ์ฐจ์ด๋Š” K๋กœ ๋™์ผํ•˜๋‹ค.
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ํ•ญ์ƒ ์กด์žฌํ•˜๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๊ทœ์น™์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ
4 3
9 8 7

 

์ถœ๋ ฅ
500

์œ„ ์ž…์ถœ๋ ฅ ์˜ˆ์ œ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฐพ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • 500(๊ตฌํ•ด์•ผ ํ•  ์ˆ˜) % 9 = 5
  • 500(๊ตฌํ•ด์•ผ ํ•  ์ˆ˜) % 8 = 4
  • 500(๊ตฌํ•ด์•ผ ํ•  ์ˆ˜) % 7 = 3
  • ์œ„ ๊ฐ’๋“ค 9 - 5, 8-4, 7-3 ์€ ๊ฐ๊ฐ 4, 4, 4๋กœ ์ „๋ถ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ทœ์น™์œผ๋กœ ํ•ด๋‹น 500์ด๋ผ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆซ์ž๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๊ฐ๊ฐ์˜ ์ฃผ์–ด์ง€๋Š” ์ž…๋ ฅ๊ฐ’๋“ค์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•ด K๋ฅผ ๋นผ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€