Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- vitis
- axi
- Bus
- UNIX
- amba
- verilog
- Zynq
- chip2chip
- SQL
- 정보처리기사
- linux
- baekjoon
- 실기
- 리눅스
- Xilinx
- FPGA
- verilog HDL
- C++
- boj
- 정처기
- 백준
- Beakjoon
- Backjoon
- hdl
- java
- 자격증
- 코딩테스트
- Vivado
- HDLBits
- AMBA BUS
Archives
- Today
- Total
Hueestory
[1850] 최대공약수 (C++) 본문
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b) {
if (a % b == 0) return b;
else return gcd(b, a % b);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ll a, b; cin >> a >> b;
ll c;
if (a >= b) c = gcd(a, b);
else if (a < b) c = gcd(b, a);
for (int i = 0; i < c; i++)
cout << "1";
return 0;
}
1. 1로 이루어진 수라고 해도, 결국 최대공약수를 구하는 문제이다
ex) a = 6, b = 3인 경우
6 % 3 == 0, GCD = 3
111111 % 111 == 0, GCD = 111
=> 따라서 a와 b의 GCD를 구하고, 그 횟수만큼 1을 출력해주면 되는 간단한 문제이다
2. LCM을 구하는 문제와 같이 재귀함수를 이용한다
gcd를 계산하는 과정에서 min(a - b, b)을 사용하려 했지만, 잘못된 풀이라 출력 초과가 났던 문제
'PS(중단) > BOJ' 카테고리의 다른 글
[18352] 특정 거리의 도시 찾기 (C++) (0) | 2024.05.28 |
---|---|
[1033] 칵테일 (C++) (0) | 2024.05.23 |
[1934] 최소공배수 (C++) (0) | 2024.05.23 |
[11689] GCD(n, k) = 1 (C++) (0) | 2024.05.22 |
[1016] 제곱 ㄴㄴ 수 (C++) (0) | 2024.05.21 |
Comments