/*
【基础】:猴子分桃(normal)
Time Limit:4000MS Memory Limit:65536K
Total Submit:258 Accepted:81
Description
有一堆桃子和N只猴子,第一只猴子将桃子平均分成了M堆后,还剩了1个,它吃了剩下的一个,并拿走一堆。后面的猴子也和第1只进行了同样的做法,请问N只猴子进行了同样做法后这一堆桃子至少还剩了多少个桃子(假设剩下的每堆中至少有一个桃子)?而最初时的那堆桃子至少有多少个?
Input
输入包含二个数据,数据间用空格隔开。第一个数据为猴子的只数N(1≤N≤10),第二个数据为桃子分成的堆数M(2≤M≤7)。
Output
输出包含两行数据,第一行数据为剩下的桃子数,第二行数据为原来的桃子数。
Sample Input
3 2
Sample Output
1
15
*/
#include < stdio.h >
#define MAX 100000001
int main( void )
{
long m,n,end,start;
long i,j,k ;
scanf( " %ld %ld " , & n, & m) ;
for (i = 1 ; i <= MAX ; i ++ )
{
for (j = 1 ,k = i ; j <= n ; j ++ )
{
if ( (k * m) % (m - 1 ) == 0 )
{
k = (k * m) / (m - 1 ) + 1 ;
}
else
break ;
}
if (j > n )
{
printf( " %ld %ld " ,k,i);
break ;
}
}
return 0 ;
}
【基础】:猴子分桃(normal)
Time Limit:4000MS Memory Limit:65536K
Total Submit:258 Accepted:81
Description
有一堆桃子和N只猴子,第一只猴子将桃子平均分成了M堆后,还剩了1个,它吃了剩下的一个,并拿走一堆。后面的猴子也和第1只进行了同样的做法,请问N只猴子进行了同样做法后这一堆桃子至少还剩了多少个桃子(假设剩下的每堆中至少有一个桃子)?而最初时的那堆桃子至少有多少个?
Input
输入包含二个数据,数据间用空格隔开。第一个数据为猴子的只数N(1≤N≤10),第二个数据为桃子分成的堆数M(2≤M≤7)。
Output
输出包含两行数据,第一行数据为剩下的桃子数,第二行数据为原来的桃子数。
Sample Input
3 2
Sample Output
1
15
*/
#include < stdio.h >
#define MAX 100000001
int main( void )
{
long m,n,end,start;
long i,j,k ;
scanf( " %ld %ld " , & n, & m) ;
for (i = 1 ; i <= MAX ; i ++ )
{
for (j = 1 ,k = i ; j <= n ; j ++ )
{
if ( (k * m) % (m - 1 ) == 0 )
{
k = (k * m) / (m - 1 ) + 1 ;
}
else
break ;
}
if (j > n )
{
printf( " %ld %ld " ,k,i);
break ;
}
}
return 0 ;
}
本文探讨了一道经典的猴子分桃编程题,通过设定条件来计算经过N只猴子分桃后的剩余数量及初始桃子总数。使用C语言实现,通过循环找到符合条件的最小桃子数。
812

被折叠的 条评论
为什么被折叠?



