一个商人骑一头驴要穿越1000公里长的沙漠,去卖10000根胡萝卜。
已知驴一次性可驮1000根胡萝卜,但每走一公里又要吃掉一根胡萝卜。
问:商人共可卖出多少胡萝卜?
ps.来自Upk的帖子
本人回复帖子的时候来了这么一句话验证:
[第一帖问题验证防广告,以后就没有了]UpK? ->[注意区分大小写,请回答(Answer):UpK2010]
本人愚昧实在不知道如何填写这个验证码,请高手指教!
下面是我的思路:
#define COUNT 10000 表示胡萝卜数
#include "stdafx.h"
#define COUNT 10000
int main(int argc, char* argv[])
{
int iCount = COUNT;
int nJ = (int)(iCount/1000)*2-1;
float a= 0.0;
int cishu = 0;
for (int i=nJ; ; i-=2)
{
a += (float)(1.0/i);
cishu++;
if(a>1.0)
{
a -=(float)(1.0/i);
break;
}
}
cishu--;
iCount -= cishu*1000;
a = (float)1.0-a;
printf("还剩下的胡萝卜数:%d\n", iCount - (int)(a*1000.0*(iCount/1000*2-1)));
return 0;
}
解释比较麻烦 简单解释下
第一个中转点是这样算出来的:根据胡萝卜总数,让驴子把胡萝卜完全搬到第一个点的时候刚好消费驴
子最大负载数的胡萝卜数,至于为什么解释不清楚。 下一个点也这样算,一直到最后一次全部搬完都用
不到驴子的最大负载的胡萝卜数就结束了
本题的答案是 剩余1400
如果胡萝卜总数为 4000 剩余 677
ps.有人的答案可能会出现少一个或者多一个情况 本人认为这种细节就没必要讨论了 因为这是一个最
优化的问题 没必要追的那么仔细
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)