解题思路:1.获取人数和每个小朋友得到的糖果数
2.把每个小朋友的糖果分成一半给前面一位小朋友,这就需要两个数组来进行计算
3.分完后在判断每个小朋友的糖果数是否为奇数,如果为奇数,就加一,并且记录次数
注意事项:第一位小朋友获得的糖果是最后一位小朋友分出来的一半糖果,要单独判断
参考代码:
Scanner scanner=new Scanner(System.in); //小朋友的人数 int renshu=scanner.nextInt(); //把每个小朋友分到的糖果数放入数组中 int[] sum=new int[renshu]; //循环输入每个小朋友分到的糖果树 for (int i = 0; i < renshu; i++) { sum[i]=scanner.nextInt(); } //每个小朋友把自己分出去一半的糖果放入数组中 int[] yibansum=new int[renshu]; //老师补发的糖果数 int count=0; //执行语句 如果得到的糖果数量不一样的则执行下面的语句 while (true) { //假设每个小朋友的糖果是一样的 boolean result=false; for (int i = 0; i < renshu; i++) { //每个小朋友都分走一半的糖果 yibansum[i]=sum[i]/2; //给左边的小朋友 sum[i]-=yibansum[i]; } for (int i = 0; i < renshu; i++) { //因为围成的是一圈 //所以如果是第一位小朋友 则获得的是最后一名学生的一半糖果 if (i==0) { sum[i]+=yibansum[renshu-1]; } else { //否则就是获得左边小朋友的一半糖果 sum[i]+=yibansum[i-1]; } } for (int i = 0; i < renshu; i++) { //分走一半糖果后判断是否为奇数 if (sum[i]%2!=0) { //如果为奇数 则老师补发一颗糖果 sum[i]+=1; //补发次数增加1 count++; } } for (int i = 0; i < sum.length-1; i++) { //判断每个小朋友的糖果是否一样 if (sum[i]!=sum[i+1]) { //不一样则继续循环 result=true; } } //如果每个小朋友的糖果是一样的 则输出老师补发糖果的次数 if (result==false) { System.out.println(count); break; } }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:747 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:511 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:737 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:1072 |
兰顿蚂蚁 (C++代码)浏览:1160 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:761 |
水仙花 (C语言代码)浏览:1163 |
简单的a+b (C语言代码)浏览:574 |
Tom数 (C语言代码)浏览:758 |
钟神赛车 (C语言代码)浏览:665 |