Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++로 컵과 선반을 깔끔하게 정리할 수 있는지 알아보기

<시간/>

컨셉

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