列表

详情


OR128. 买橘子

描述

小明去附近的水果店买橙子,水果商贩只提供整袋购买,有每袋6个和每袋8个的包装(包装不可拆分)。可是小明只想购买恰好n个橙子,并且尽量少的袋数方便携带。如果不能购买恰好n个橙子,小明将不会购买。

输入描述

输入一个整数n,表示小明想要购买n(1≤n≤100)个橙子

输出描述

输出一个整数表示最少需要购买的袋数,如果不能买恰好n个橙子则输出-1

示例1

输入:

20

输出:

3

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2019-04-10

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
    int n;
    scanf("%d",&n);
    int x,countTmp,count = 100;
    int indx = 0;
    int tmp;
    if (n<8)
    {
        printf("%d",-1);
    }
    else if (n>=8)
    {
        for (x = 0;x<n/6+1;x++)
        {
            tmp = n-6*x;
            if (tmp%8 == 0 && tmp>=8)
            {
                indx = 1;
                countTmp = (2*x+n)/8;
                if (countTmp < count)
                {
                    count = countTmp;
                }
            }
        }
        if (indx == 1)
        {
            printf("%d",count);
        }
        if (indx == 0)
        {
            printf("%d",-1);
        }
    }

}

C 解法, 执行用时: 2ms, 内存消耗: 260KB, 提交时间: 2019-01-27

#include <stdio.h>
int main(){
    int n , min = 100 ; 
    scanf ("%d",&n) ;
    int a , b ;
    for (a = 0 ; a <= n/8 ; a ++){
        for (b = 0 ; b <= n/6 ; b ++){
            if (a*8 + b*6 == n){
                if (min > (a+b))
                    min = a+b ;
            }
        }
    }
    if (min == 100){
        printf ("-1\n") ;
    }
    else
        printf ("%d\n",min);
}

上一题