SCAU 18935 贪吃的小Q
思路:从别人那发现的,就是从最后一天开始按照吃的数量加倍的方法,找到最后一天吃的最小数目,然后减去这一天的数目。将剩余的问题化作n-1天情况下的同类问题,循环n次即可找到第一天吃的数目。(可以证明,这样计算每一天吃的数目不超过下一天的两倍)
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <algorithm>
int main()
{
int n,m,sum,val,i;
scanf("%d%d",&n,&m);
sum=m;
for(i=n;i>0;i--)
{
val=(sum-1)/(pow(2,i)-1)+1;
sum=sum-val;
}
printf("%d",val);
return 0;
}