本文共 1226 字,大约阅读时间需要 4 分钟。
10个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖果分一半给左边的小孩;糖块为奇数的人可向老师要一块。问经过这样几次后,大家手中的糖的块数将一样多?每人各有多少块糖?
Input
多组数据,每组数据为10正整数,分别为游戏开始时,每个小孩手中的糖果数。
Output
游戏结束后,游戏的次数及每人的中的糖果数。
Sample Input
10 2 8 22 16 4 10 6 14 20
Sample Output
17 18
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in); //创建输入对象
while(in.hasNextInt())
{
int child[]=new int[20]; //定义一个数组
for(int i=0;i<10;i++)
{
child[i]=in.nextInt();
}
Child dc=new Child(child, 0); //创建一个新类
while(dc.judg()==false)
{
dc.divid();
}
dc.output();
}
in.close();
}
}
class Child
{
private int num[]; //私有域
private int count=0;
public Child(int child[], int count) //构造器
{
num=child;
this.count=count;
this.sum=sum;
}
public void divid() //从右到左分糖果
{
count++; //计数器
int m=num[0];
for(int i=0;i<9;i++)
{
num[i]=num[i]/2+num[i+1]/2;
}
num[9]=num[9]/2+m/2; //第1个小孩分给第10个小孩
for(int i=0;i<10;i++) //判断小孩手中的糖是否为奇数
{
if(num[i]%2==1)
num[i]++;
}
}
public boolean judg() //判断小孩手中的糖是否相等
{
for(int i=0;i<9;i++)
{
if(num[i]!=num[i+1])
return false;
}
return true;
}
public void output()
{
System.out.print(count);
System.out.print(" "+num[0]+" ");
}
}
转载地址:https://blog.csdn.net/weixin_32661831/article/details/114719040 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!