题解 P6702 【[COCI2010-2011#7] ŠEĆER】

· · 题解

好像还没有人用O(1)的算法:

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
    cin>>n;
    if(n==4||n==7)
    {
        cout<<-1;
        return 0;
    }//这两要特判,否则会WA
    if(n%5==0)
      cout<<n/5;else//如果整除5,那么全部用第二种包装盒
      if(n%5==1)
        cout<<n/5+1;else//如果余数为1,我们把一个②号包装盒替换成两个①号包装盒,总个数增加了1
        if(n%5==2)
          cout<<n/5+2;else//如果余数为2,我们把两个②号包装盒替换成四个①号包装盒,总个数增加了2
          if(n%5==3)
            cout<<n/5+1;else//如果余数为3,我们再加上一个①号包装盒,总个数增加了1
            cout<<n/5+2;//如果余数为4,我们把一个②号包装盒替换成三个①号包装盒,总个数增加了2
    return 0;
}

于是就完美的结束啦!