求数学公式“买M送N”或程序实现方法
发布网友
发布时间:2022-04-23 20:21
我来回答
共2个回答
热心网友
时间:2023-08-27 22:19
如果是编程序的话,最简单的办法是建立一个数组。
先选一个最大值,比如一个房间最多能呆100个人。那么就建一个100个数的数组。数组内的值为实际应收的钱。
比如说是买3送1。那么数组内容为
(1,2,3,3,4,5,6,6,7,8,9,9....)
买4送一就是
(1,2,3,4,4,5,6,7,8,8,9,10...)
这样做的好处是随便怎样的优惠安排都可以,如
开始是买三送一,以后的人是买二送一
(1,2,3,3,4,5,5,6,7,7...)
而且设置简单,不用多动脑子。
整个过程说明:计算机是死的,人脑才是活的。
如果说一定是公式的话
n:入房人数
k:买几
j:送几
p=n\(k+j) (整除)
实际付款=n-p*(k+j)+p*k
热心网友
时间:2023-08-27 22:19
我这次好点看了一下, 你所说的不属于"买5送3"
因为"入房6个人,收5个人的钱", 他们已经达成买5的条件, 而并没有获得3的赠送.
据此, 更改了代码
#define M 5
#define N 3
void main(void)
{
int x, y;
FILE *fp;
fp=fopen("temp.txt","w");
for(x=1;x<100;x++)
{
y=x/(M+N)*M+(x%(M+N)-x%(M+N)/M*(x%(M+N)%M));
fprintf(fp,"x=%2d, y=%2d\n",x,y);
}
fclose(fp);
}
输出的结果为
x= 1, y= 1
x= 2, y= 2
x= 3, y= 3
x= 4, y= 4
x= 5, y= 5
x= 6, y= 5
x= 7, y= 5
x= 8, y= 5
x= 9, y= 6
x=10, y= 7
x=11, y= 8
x=12, y= 9
x=13, y=10
x=14, y=10
x=15, y=10
x=16, y=10
x=17, y=11
x=18, y=12
x=19, y=13
x=20, y=14
x=21, y=15
x=22, y=15
x=23, y=15
x=24, y=15
x=25, y=16
x=26, y=17
x=27, y=18
x=28, y=19
x=29, y=20
x=30, y=20
x=31, y=20
x=32, y=20
x=33, y=21
x=34, y=22
x=35, y=23
x=36, y=24
x=37, y=25
x=38, y=25
x=39, y=25
x=40, y=25
x=41, y=26
x=42, y=27
x=43, y=28
x=44, y=29
x=45, y=30