티스토리 뷰
풀이과정
A B C D를 차례로 구해야 하는데 먼저
B를 구해보자면 B는 도색 광택도 안된거니 B는 (k / lcm(p+1, v+1))
그다음 C 는 (k / v + 1) - B
D는 반대로 즉 (k / p + 1) - B
A는 K - B - C - D로 구할수 있음.
floor가 들어가야 하지만 알아서 형변환됨.
A B C D 부분부분 쪼개서 생각하고 k 안에 있는 연필의 수를 구해야 하니 k에서 모든 구하고자 하는 부분들을 나눠줘야함
코드
#include <iostream>
#include <cmath>
using namespace std;
long long gcd(long long a, long long b){
if (b == 0) return a;
return gcd(b, a % b);
}
int lcm(long long a, long long b){
return (a / gcd(a, b)) * b;
}
int main(){
long long p, v, k;
cin >> p >> v >> k;
long long a, b, c, d;
b = floor(k/ lcm(p+1,v+1)); //왜 floor?
c = floor(k/(v+1)) - b;
d = floor(k/(p+1)) - b;
a = k - b - c - d;
cout << a << " " << b << " " << c << " " << d;
}
//O(log(a+b)) cmath, math.h
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 몇번째조합
- 1438
- 문자삼각형1
- 5545
- 15650
- 2604
- 백준
- 색종이(초)
- 15654
- 트리 순회
- N과M
- 8129
- 문자열찾기
- 15651
- 세로읽기
- 단어집합2
- 1535
- 1338
- 3427
- 2857
- 24954
- 15652
- 숫자사각형3
- 연필공장
- 색종이(중)
- 문자사각형
- 볼모으기
- 볼 모으기
- 1304
- 정올
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함