๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 1850๋ฒ ์ต๋ ๊ณต์ฝ์ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
์ด๋ฒ ๋ฌธ์ ๋ ์ต๋ ๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ๋จ์ํ ๋ฌธ์ ์์ ์กฐ๊ธ ๋ณํ์ ํ ํํ์ด๋ค.
์ด ๋ณํ ๋๋ถ์ ๋ฌธ์ ์ ์ ๋ต๋ฅ ์ด 30%๋ผ๊ณ ์๊ฐํ๋๋ฐ, ์ ๋ฐ๋ผ์จ๋ค๋ฉด ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ ๋ณํ์ด๋ค.
ํด๊ฒฐ๋ฒ
๋ฌธ์ ์์๋ ๋ค์ ๋ ๊ฐ์ ์ ๋ ฅ์ ์ค๋ค.
- A : ์ฒซ ๋ฒ์งธ ์์ ์๋ฆฌ์
- B : ๋ ๋ฒ์งธ ์์ ์๋ฆฌ์
์ด๋ ๊ฒ A์ B๋ฅผ ๋ฐ๊ฒ ๋๋ค๋ฉด ์ฐ๋ฆฌ๋ 1์ A๋ฒ๊ณผ B๋ฒ ๊ฐ๊ฐ ์ด์ด ๋ถํ ํ๋์ ์๋ฅผ ๋ง๋ค ์๊ฐ ์๋ค.
๋ง์ฝ A๊ฐ 3์ด๊ณ B๊ฐ 6์ด๋ผ๋ฉด
A = 111
B = 111_111
์ด์ ๊ฐ์ด ๊ตฌ์ฑ๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์ด A์ B๊ฐ ๋ง๋ ์ ๋ผ๋ฆฌ ์ต๋๊ณต์ฝ์ GCD๋ฅผ ๊ตฌํ๋ผ๋ ๋ฌธ์ ์ด๋ค.
๋จ ์กฐ๊ฑด์ด A์ B๋ 2^62์ ๊ณฑ์ผ๋ก ๋๋ต 10๊ฒฝ์ ์๋ฆฌ์๊ฐ ์ฌ ์ ์๋ค.
์คํดํ๋ฉด ๋ฌธ์ ํ๋ฆฐ๋ค.
10๊ฒฝ์ 1000์กฐ๊ฐ 10๊ฐ ์๋๋ฐ, ์ด 10๊ฒฝ์ ์๋ฆฌ์๋ 16์น์ด๋ค.
A๊ฐ 16์ด๊ณ B๊ฐ 16์ด๋ฉด
A = 1111111111111111
B = 1111111111111111
์ธ ์ ์ด๋ค.
์ด๊ฒ ์ด 10๊ฒฝ์ ์๋ฆฌ์๋ผ๋ฉด ์ฐ๋ฆฐ ์ ๋๋ก ์ผ๋ฐ ์๋ฃํ์ผ๋ก ํด๊ฒฐํ์ง ๋ชปํ๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ค.
์ ๊ทผ๋ฒ
์ด ๋ฌธ์ ์์ ์ฃผ์ด์ง๋ A์ B ์๋ฆฌ์๋ฅผ ์๊ฐํด๋ณด์.
A = 3
์ด๊ณB = 6
์ด๋ฉด111
์ด๋ผ๋ ์๊ฐ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.A = 5
์ด๊ณB = 10
์ด๋ฉด11111
๊ฐ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.A = 5
์ด๊ณB = 15
์ด๋ฉด11111
๊ฐ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.
A = 111;
B = 111_111;
answer = 111;
A = 11111;
B = 11111_11111;
answer = 11111;
A = 11111;
B = 11111_11111_11111;
answer = 11111;
๊ท์น์ด ๋ณด์ด๋?
์ข ๋ ์ง๊ด์ ์ผ๋ก ๋ฐ๊ฟ๋ณด๊ฒ ๋ค.
A = 3
์ด๊ณB = 6
์ด๋ฉด111
์ด๋ผ๋ ์๊ฐ ์ฆ 1์ 3์๋ฆฌ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.A = 5
์ด๊ณB = 10
์ด๋ฉด11111
๊ฐ ์ฆ 1์ 5์๋ฆฌ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.A = 5
์ด๊ณB = 15
์ด๋ฉด11111
๊ฐ ์ฆ 1์ 5์๋ฆฌ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.
์ด๋ ๊ฒ ๋๋ค๋ฉด ์ฌ์ค์ A์ B์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๊ณ ๊ฒฐ๊ณผ ์๋งํผ 1์ 1์๋ฆฌ๋งํผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
์ฃผ์ ํ์
์ฃผ์ํ์ a์ b๋ 2^63 ์ ๊ณฑ์ ์๋ค.
์ด ๋ง์ java์ intํ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค๋ ๋ป์ด๋ค.
long ํ์ 2^64 ์ ๊ณฑ๊น์ง ํํํ ์ ์์ผ๋ฏ๋ก longํ์ด ์ ์ ํด ๋ณด์ธ๋ค.
์ ๋ต ์ฝ๋
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] ab = br.readLine().split(" ");
long a = Long.parseLong(ab[0]);
long b = Long.parseLong(ab[1]);
if(a < b) {
long temp = a;
a = b;
b = temp;
}
while(b > 0) {
long temp = b;
b = a % b;
a = temp;
}
while(a-- > 0) {
bw.write("1");
}
bw.flush();
bw.close();
}
}
๋๊ธ