牛客网――买苹果(水题贪心)

匿名 (未验证) 提交于 2019-12-03 00:25:02

点击打开链接

输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果
输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1

题意:n个苹果,有6个一袋,8个一袋的,最少需要买多少袋的。如不能买输出-1.

解题思路:因为求的是最少袋数,且数据量很小,可以从8开始枚举。(1)可以被8整除(2)8x+6y=n,从12到1开始枚举8(3)可以被6整除的。前后顺序不能变,因为是求最少袋数,所以以贪心的思想,先拿多的,不够再拿少的。

#include <iostream> #include <cmath> using namespace std; long long a[1000009]; int main() {      int n;     while(cin>>n)     {         int flag=0;         if(n%8==0)         {             cout<<n/8;             continue;         }         for(int i=12;i>=1;i--)         {             if(n>=8*i&&(n-8*i)%6==0)             {                 flag=1;                 cout<<i+(n-8*i)/6<<endl;                 break;             }         }         if(!flag && n%6==0)         {             cout<<n/6;             continue;         }         if(!flag)         {             cout<<"-1"<<endl;         }     }     return 0; } 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!