일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 이분탐색
- 알고스팟
- 네이버 지도 api
- 축사 배정
- 이친수
- 세그먼트 트리
- 피보나치수열
- 백트래킹
- tensorflow
- Mysql5.7
- 최소스패닝트리
- 알고리즘
- 분할정복
- pythonanywhere
- 연속합
- Ubuntu64bit
- 피노나치 수열
- Floyd-Warshall
- 백준
- 다이나믹 프로그래밍
- VituralBox
- 동적계획법
- 나무자르기
- 이분 매칭
- SpringBoot
- 이분매칭
- 코드그라운드
- 최소신장트리
- Flpyd-Warshall
- 쉬운 계단 수
Archives
- Today
- Total
초보개발자
[POTION] 마법의 약 본문
- 분류: 정수론
- 난이도: 중
- 입력: 테스트 케이스 C, 재료의 수 N(1<=N<=200), 약에 들어가야 하는 각 재료의 양 Ri, 이미 냄비에 넣은 재료의 양 Pi(1<=Ri, Pi<=1000)
- 출력: N개의 정수로 각 재료마다 더 넣어야 하는 양 출력(단, 최소 한병은 나와야 한다.)
- 소스
#include <iostream>
#include <algorithm> using namespace std; int recipe[200], put[200], remain[200]; int GCD(int); int gcd(int, int); int ceil(int, int); void potion(int); int main(){ int C; cin >> C; for (int testcase = 1; testcase <= C; testcase++){ int number; cin >> number; for (int i = 0; i < number; i++) cin >> recipe[i]; for (int i = 0; i < number; i++) cin >> put[i]; potion(number); for (int i = 0; i < number; i++) cout << remain[i] << " "; cout << endl; } return 0; } void potion(int n){ int gcd = GCD(n), mul = gcd; for (int i = 0; i < n; i++){ mul = max(mul, ceil(put[i] * gcd, recipe[i])); recipe[i] /= gcd; } for (int i = 0; i < n; i++) remain[i] = recipe[i] * mul - put[i]; } int ceil(int a, int b){ return (a + b - 1) / b; } int GCD(int n){ int ret = recipe[0]; for (int i = 1; i < n; i++) ret = gcd(ret, recipe[i]); return ret; } int gcd(int a, int b){ if (b == 0) return a; else return gcd(b, a % b); }
- 소스 설명:
- int gcd(int a, int b): 파라미터 a, b의 최대 공약수를 구한다.
- int GCD(int n): 주어진 n개의 입력(recipe)의 최대 공약수를 구한다.
- int ceil(int a, int b): a/b와 같거나 큰 최소의 정수를 구한다.
- int potion(int n): 주어진 n개의 재료의 넣어야 하는 양을 구한다. 처음 모든 재료의 최대 공약수를 구하고, ceil을 호출해 최소의 정수를 곱한다. 그리고 remain[i]에 recipe[i] * mul / gcd - put[i]를 구한다.
'알고리즘 > 문제해결 소스코드' 카테고리의 다른 글
[LAN] 근거리 네트워크 (0) | 2017.03.02 |
---|---|
[TRAVERSAL] 트리 순회 순서 변경 (0) | 2017.02.21 |
[QUADTREE] 쿼드 트리 뒤집기 (0) | 2016.05.20 |
[POLY] 폴리오미노 (0) | 2016.03.11 |
[PACKING] 여행짐싸기 (0) | 2016.03.04 |
Comments