컨셉
주어진 세 가지 유형의 컵(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