华东理工网考有一道苹果题,大致如下
苹果每个0.8元,第一天买2个,后面每天购买量是前一天的两倍,直到总购买量为不超过100的最大量,求每天平均的花费。
网上有些答案是错的,当时找了发现答案各种,自己验证后写了自己的算法(基于位移)
#include <stdio.h>
int main()
{
int currCount = 2;//当天数量
int currDay = 1;//第几天
double avgAmount;//平均每天的花费
double amount = 0;//总费用
while(currCount < 100){
amount += currCount * 0.8;
printf(
"第%d天:买了%d个,花费%.2lf,累计:%.2lf\n"
, currDay, currCount, currCount * 0.8, amount);
currDay ++; currCount = currCount << 1;
}
avgAmount = amount / (currDay - 1);
printf("累计购买天数:%d,总消费:%.2lf\n", currDay - 1, amount);
printf("平均花费:%.2lf", avgAmount);
return 0;
}