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 |
Tags
- 다이나믹프로그래밍
- 최대공약수
- 우선순위큐
- 정렬
- MySQL
- 코테준비
- 플로이드와샬
- set
- 리시프
- 참고 문헌 : MACHINE LEARNING 기계학습 _ 오일석
- 코테
- 스택
- DP
- sql고득점kit
- 알고리즘
- dfs
- 시스템콜
- String
- 동적계획법
- substr
- 코딩테스트연습
- unordered_map
- 문자열
- 다익스트라
- C++
- MAP
- Dijkstra
- 프로그래머스
- vector
- 백준
Archives
- Today
- Total
YeJin's Footsteps
Algorithm Study_0703 본문
동운좌와 함께하는 즐거운 알고리즘
- 최대 공약수, 최소 공배수
최대공약수
int gcd (int a, int b){
return b? gcd(b, a%b): a;
}
최소공배수
long long lcm(int a, int b){
return a*b/gcd(a,b);
}
관련 문제_백준 "분수 합" (1735)
https://www.acmicpc.net/problem/1735
1735번: 분수 합
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
www.acmicpc.net
- 핵심 아이디어
x1/y1 + x2/y2
=> UP (분자) : x1*y2 + x2*y1
DOWN (분모) : y1*y2
기약 분수로 만드는 법 : 분자와 분모를 각각 "분자와 분모의 최대공약수"로 나눈다
풀이 코드
#include <iostream>
#include <vector>
using namespace std;
int gcd(int a, int b){
return b?gcd(b,a%b):a;
}
long long lcm(int a, int b){
return a*b/gcd(a,b);
}
int main() {
int x1, x2, y1, y2;
cin>>x1>>y1; cin>>x2>>y2;
int down = y1*y2;
int up = (x1*y2+x2*y1);
int g=gcd(up,down);
cout<<up/g<<' '<<down/g;
return 0;
}
소수 (에라토스테네스체)
void Eratos(){//소수 = false , 합성수 = true
sieve[0]=true; sieve[1]=true;
for(int i=2; i*i<MN; i++){
if(sieve[i]) continue;
for(int p=i*i; p<MN; p+=i) sieve[p]=true;
}
}
Comments