新年晚会老师给大家分糖,手端着一盘糖,让第一个同学先拿1块糖,再把盘中的糖分1/7给他;然后让第二个同学拿2块糖,
再把盘中的糖的1/7给他;第三个同学拿3块糖后,仍把盘中的糖的1/7给他。照这个办法分下去,最后一个同学自己拿完糖后,
糖恰好分完,而且每个人分到的糖块数相同。问共有几人?每人分几块糖?(分糖.C)新年晚会老师给大家分糖,手端着一盘糖,
让第一个同学先拿1块糖,再把盘中的糖分1/7给他;然后让第二个同学拿2块糖,再把盘中的糖的1/7给他;第三个同学拿3块糖后
,仍把盘中的糖的1/7给他。照这个办法分下去,最后一个同学自己拿完糖后,糖恰好分完,而且每个人分到的糖块数相同。
问共有几人?每人分几块糖?(分糖.C)
思路:
我的思路就是穷举糖数和人数,满足条件的就是答案,
第一个人从总数中拿走1个即x-1,又将剩下的分1/7给他,即(x-1)/7 则总数还剩下(x-1)-(x-1)/7
代码:
#include <stdio.h>
main()
{
int t,i,x,f=0;
for (x=10;;x++) //糖果数穷举
{
t=x; //t取代x表示进行运算的总糖果数
for (i=1;i<x;i++) //人数不能多于糖果数
{
if ((t-i)%7==0) //满足能被7整除
{
t=(t-i)-(t-i)/7; //下一个同学拿糖数
if (t==0) //当t为0,分糖结束
{
printf("%d %d",x/i,i);
f=1; //标记大循环退出
break;
}
}
else //如果if不能整除说明x的值不是糖果数
break;
}
if (f)
break;
}
}