1034: 猴子吃桃
时间限制: 1 Sec 内存限制: 128 MB
提交: 412 解决: 204
[提交][状态][讨论版]
题目描述
猴妈妈给小猴子们准备了N个桃子,无数个小猴子排队去领桃子吃,排在第一个的领1个桃子,排在第二个的领2个桃子,排在第三个的领4个桃子,排在第四个的领8个桃子,以此类推,一旦桃子不够了,猴妈妈就把剩下的桃子给下一个猴子,然后其余的小猴子就得挨饿了^_^
现在,有一只小猴子想拿到最多的桃子,那么它应该排在第几个位置,又能吃到几个桃子呢?
输入
有多组输入数据,第一行为一个数字T,代表有T组输入数据 (0
#include<stdio.h>
#include<math.h>
int main()
{int i,n,a,m;scanf("%d",&m);while(m--)
{scanf("%d",&a);if(a==1)printf("%d %d\n",1,1);else{int count=0;int pos=0;while(a>=count){count+=pow(2,pos);pos++;} pos--;n=pow(2,pos-1);count=count-pow(2,pos);count=a-count;if(n>=count)printf("%d %d\n",pos,n);elseprintf("%d %d\n",pos+1,count);
}
}return 0;}