16430. 제리와 톰
문제
톰은 마트에서 치즈 1kg 을 사서 집으로 돌아왔습니다.
그런데 톰이 한눈을 판 사이 제리가 와서 A/B kg 만큼 훔쳐갔습니다.
제리가 치즈를 훔쳐 간 후 톰이 가지고 있는 치즈의 무게는 얼마인가요?
입력
첫 번째 줄에 두 정수 A, B (1 ≤ A < B ≤ 9) 가 주어집니다.
A와 B는 서로소임이 보장됩니다.
출력
정답을 기약분수로 표현했을 때 P/Q kg 이라면 첫 번째 줄에 P와 Q를 공백을 사이에 두고 출력합니다.
소스코드
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int na = b - a;
int nb = b;
//유클리드 호제법
while (nb != 0)
{
int c = na % nb;
na = nb;
nb = c;
}
cout << (b - a) / na << " " << b / na;
}
💡유클리드 알고리즘 : 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘 (출처: 위키백과)
❓기약분수를 어떻게 코드로 짜야할까?
❗기약분수를 나누는 수는 분자와 분모의 최대공약수이다. 최대공약수를 구하면 답을 알 수 있다. 최대공약수를 구하는 방법은 몫을 나머지로 반복하여 나누는 것이다.(→ 이것을 유클리드 호제법이라고 한다.)
(본 포스팅 하단에 도움을 받은 링크를 걸어놓았다.)
15740. A + B - 9 (서브태스크)
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B (-1010000 ≤ A, B ≤ 1010000)가 주어진다.
출력
첫째 줄에 A+B를 출력한다.
소스코드
#include <iostream>
using namespace std;
int main() {
long long a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
75점 이상은 실력 부족으로 골드 정도가 되었을 때, 다시 도전 예정,,
16430. 제리와 톰 (서브태스크)
문제
부산일과학고등학교의 효진이는 수학의 귀재이다. 어떤 문제라도 보면 1분 내에 풀어버린다는 학교의 전설이 내려올 정도였는데, 이런 킹ㅡ갓 효진에게도 고민이 생겼다. 대부분의 문제에서 반복되는 연산이 있었기 때문이다! 이 연산은 너무 길어서 종이에 풀던 효진이는 너무 고통스러워서, 자신이 새로 연산자를 만들기로 했다.
연산자의 기호는 @으로, A@B = (A+B)×(A-B)으로 정의내리기로 했다.
하지만, 효진이는 막상 큰 숫자가 들어오자 계산하기 너무 귀찮아졌다.
효진이를 도와 정수 A, B가 주어지면 A@B를 계산하는 프로그램을 만들어주자!
입력
첫째 줄에 A, B가 주어진다. (1 ≤ A, B ≤ 100,000)
출력
첫째 줄에 A@B의 결과를 출력한다.
소스코드
#include <iostream>
using namespace std;
int main() {
long long int a, b;
cin >> a >> b;
long long int c = (a + b) * (a - b);
cout << c;
return 0;
}
(long long을 했는데도 불구하고 30점이 나오길래 무엇이 문제인지 생각했다. 알고보니, a와 b에만 long long int를 선언하고 c는 int형으로 둔 것이 문제였다. 다음엔 이런 실수를 하지 않도록 하자)
[참고자료]
16430. 유클리드 호제법, 최대공약수 구하는 법
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kmc7468&logNo=221017936040
C++ - 최대공약수와 최소공배수 구하기
안녕하세요, static입니다. C++로 빠르게 최대공약수와 최소공배수를 구하는 방법을 알아보겠습니다.https...
blog.naver.com
'Language > C++' 카테고리의 다른 글
[C++_백준] 10828, 10845 (0) | 2022.03.16 |
---|---|
[C++_제 9장] 객체와 클래스 (0) | 2022.03.10 |
[C++_백준] while문 (10952, 10951, 1110) (0) | 2022.02.08 |
[C++_백준] 16394, 15894 (0) | 2022.02.04 |
[C++_백준] 3003, 5554, 5522 (0) | 2022.02.03 |