티스토리 뷰

카테고리 없음

5545 연필 공장 (정올)

rectified 2024. 12. 9. 14:27

풀이과정

 

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
링크
«   2025/02   »
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
글 보관함