有一堆桃子和N只猴子,第一只猴子将桃子平均分成了M堆后,还剩了1个,它吃了剩下的一个,并拿走一堆。后面的猴子也和第1只进行了同样的做法,请问N只猴子进行了同样做法后这一堆桃子至少还剩了多少个桃子(假设剩下的每堆中至少有一个桃子)?而最初时的那堆桃子至少有多少个?
输入
输入包含二个数据,数据间用空格隔开。第一个数据为猴子的只数N(1≤N≤10),第二个数据为桃子分成的堆数M(2≤M≤7)。
输出
输出包含两行数据,第一行数据为剩下的桃子数,第二行数据为原来的桃子数。
测试用例 0 测试用例 1
测试输入 1 3 2
1 4 3
期待的输出 1 1
2 15
1 14
2 79
时间限制 1秒 1秒
内存限制 1024KB 1024KB
參考答案:#include "stdio.h"
main()
{
int m,n,x,i,j,k,count;
printf("请输入猴子个数(1到10个)和所分堆数(2到7堆):\n");
scanf("%d %d",&n,&m);
if((n<1||n>10)||(m<2||m>7))
{
printf("输入数据错误!按任意键退出\n");
getch();
exit(0);
}
for(i=m-1;i<10000;i+=m-1)
{
count=0;
x=i;
for(j=1;j<=n;j++)
{
if(x*m%(m-1)==0)
{
x=x*m/(m-1)+1;
count++;
}
else break;
}
if(count==n)
{
printf("剩余桃子数:%d 个\n",i);
printf("原桃子数:%d 个\n",x);
printf("%d",x);
for(k=1;k<=n;k++)
{
x=(x-1)*(m-1)/m;
printf("==>%d",x);
}
printf("\n");
break;
}
}
printf("按任意键退出\n");
getch();
}