您的位置:首页 > 编程语言

网易2017秋招编程题 买苹果

2017-10-18 01:38 288 查看

1 问题建模

求 min(x+y):6x+8y=n,1≤n≤100,x,y∈N

2 解题步骤

2.1 求解

易知方程有解的必要条件是: n=2m,m∈N,m≥2,则方程可化为: 3x+4y=m

求解,得: {x=4t−my=m−3t,t∈N

于是: x+y=t⇒min(x+y)=min(t)=⌈m4⌉=⌊m+34⌋=⌊n+68⌋

2.2 有解的充要条件

由于

4t−m=x≥0⇒t≥m4m−3t=y≥0⇒t≤m3⎫⎭⎬⎪⎪⇒⌈m4⌉≤t≤⌊m3⌋,m∈N,m≥2

因此,方程有解的充分必要条件是:(1) n=2m,m∈N,m≥2 (2) ⌈m4⌉≤⌊m3⌋

分析条件(2):

(a) m≥9 时, 3(m+3)≤4m⇒m+34≤m3⇒⌈m4⌉=⌊m+34⌋≤⌊m3⌋

(b) 2≤m≤8 时, ⌈m4⌉ 与 ⌊m3⌋ 的列表如下:

m2345678
⌈m4⌉1112222
⌊m3⌋0111222
xx
整理可得,方程有解的充分必要条件是:

n=2m,m∈N,m∈{3,4}∪[6,+∞)

即: n∈{2m,m∈N}∩({6,8}∪[12,+∞))

3 源码

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n;
int res = -1;

scanf("%d", &n);

if ((n & 1) == 0 && (n == 6 || n == 8 || n >= 12))
{
res = (n + 6) / 8;
}

printf("%d", res);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网易 编程 买苹果