컨셉
주어진 세 가지 유형의 컵(p[])과 받침 접시(q[]), m개의 선반에 대해 컵과 선반을 깔끔하게 배열할 수 있는지 확인합니다.
이제 다음 규칙을 따르면 컵과 접시의 배열이 깔끔해집니다 -
- 첫 번째 규칙에 따르면 어떤 선반에도 컵과 접시를 둘 수 없습니다.
- 두 번째 규칙에 따르면 선반에는 컵이 5개를 넘을 수 없습니다.
- 세 번째 규칙에 따르면 모든 선반에는 접시가 10개를 넘을 수 없습니다.
입력
p[] = {4, 3, 7} q[] = {5, 9, 10} m = 11
출력
Yes
설명
총 컵 =14, 필요한 선반 =3
총 접시 =24, 필요한 선반 =3
따라서 필요한 총 선반 =3 + 3 =6,
주어진 선반 수 m보다 작습니다. 따라서 출력은 예입니다.
입력
p[] = {5, 8, 5} q[] = {4, 10, 11} m = 3
출력
No
총 컵 =18, 필요한 선반 =4
총 접시 =25, 필요한 선반 =3
따라서 필요한 총 선반 =4 + 3 =7,
주어진 선반 수 m보다 큽니다. 따라서 출력은 아니오입니다.
방법
컵과 접시를 배열하기 위해 컵의 총 개수 p와 접시의 총 개수 q를 결정합니다. 동일한 선반에 5개 이상의 컵을 둘 수 없기 때문에 공식 (p+5-1)/5에 의해 컵에 필요한 최대 선반 수를 결정하고 공식을 구현하여 접시에 필요한 최대 선반 수를 결정합니다( q+10-1)/10. 이 두 값의 합이 m보다 작거나 같으면 배열이 가능하지 않은 것으로 나타났습니다.
예시
// C++ code to find if neat // arrangement of cups and // shelves can be made #include<bits/stdc++.h> using namespace std; // Shows function to check arrangement void canArrange1(int p[], int q[], int m){ int sump = 0, sumq = 0; // Used to calculate total number // of cups for(int i = 0; i < 3; i++) sump += p[i]; // Used to calculate total number // of saucers for(int i = 0; i < 3; i++) sumq += q[i]; // Now adding 5 and 10 so that if the // total sum is smaller than 5 and // 10 then we can get 1 as the // answer and not 0 int mp = (sump + 5 - 1) / 5; int mq = (sumq + 10 - 1) / 10; if(mp + mq <= m) cout << "Yes"; else cout << "No"; } // Driver code int main(){ // Shows number of cups of each type int p[] = {4, 3, 7}; // Shows number of saucers of each type int q[] = {5, 9, 10}; // Shows number of shelves int m = 10; // ndicates calling function canArrange1(p, q, m); return 0; }
출력
Yes