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); }