Description

A number of students sit in a circle facing their teacher in the center. Each student initially has an even number of pieces of candy. When the teacher blows a whistle, each student simultaneously gives half of his or her candy to the neighbor on the right. Any student, who ends up with an odd number of pieces of candy, is given another piece by the teacher. The game ends when all students have the same number of pieces of candy.         Write a program which determines the number of times the teacher blows the whistle and the final number of pieces of candy for each student from the amount of candy each child starts with.        
         
 

Input

The input may describe more than one game. For each game, the input begins with the number N of students, followed by N (even) candy counts for the children counter-clockwise around the circle. The input ends with a student count of 0. Each input number is on a line by itself.        
         
 

Output

For each game, output the number of rounds of the game followed by the amount of candy each child ends up with, both on one line.        
         
 

Sample Input

6 36 2 2 2 2 2 11 22 20 18 16 14 12 10 8 6 4 2 4 2 4 6 8 0
 

Sample Output

15 14 17 22 4 8
 

Hint

 The game ends in a finite number of steps because: 
1. The maximum candy count can never increase.
2. The minimum candy count can never decrease.
3. No one with more than the minimum amount will ever decrease to the minimum.
4. If the maximum and minimum candy count are not the same, at least one student with the minimum amount must have their count increase. 这是我的代码,我依旧不知道这是为什么!!!! 被自己蠢死了!
#include <iostream>
using namespace std;
int x[],y[];
void f(int s[],int n,int k)
{
int i,j,a[][];
for(i=;i<n;i++)a[][i]=s[i];
for(j=;;j++){
bool flag=true;
a[j][]=a[j-][]/+a[j-][n-]/;
if(a[j][]%!=)a[j][]++;
for(i=;i<n;i++){
a[j][i]=a[j-][i-]/+a[j-][i]/;
if(a[j][i]%!=)a[j][i]++;
if(flag==true&&a[j][i]!=a[j][])flag=false;
}
if(flag==true){
x[k]=j;
y[k]=a[j][];
break;
}
}
}
int main()
{
int n,k=;
while(cin>>n){
if(n==)break;
int s[],i;
for(i=;i<n;i++)cin>>s[i];
f(s,n,k);
k++;
}
for(int i=;i<k;i++)
cout<<x[i]<<" "<<y[i]<<endl;
//system("pause");
return ;
}

这是正确代码
#include<iostream>
using namespace std;
const int MAXN=;
int a[MAXN];
int main()
{
int n;
int i;
while(cin>>n,n)
{
for(i=;i<n;i++)cin>>a[i];
int res=;
while()
{
for(i=;i<n;i++)
if(a[i-]!=a[i]) break;
if(i>=n) break;
res++;
int temp=a[n-]/;
for(i=n-;i>;i--)
{
a[i]/=;
a[i]+=a[i-]/;
}
a[]/=;
a[]+=temp;
for(i=;i<n;i++)
if(a[i]&) a[i]++;
}
cout<<res<<" "<<a[]<<endl;
}
//system ("pause");
return ;
}

M - Candy Sharing Game的更多相关文章

  1. POJ - 1666 Candy Sharing Game

    这道题只要英语单词都认得,阅读没有问题,就做得出来. POJ - 1666 Candy Sharing Game Time Limit: 1000MS Memory Limit: 10000KB 64 ...

  2. hdu 1034 Candy Sharing Game

    Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. Candy Sharing Game(模拟搜索)

    Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  4. Candy Sharing Game(hdoj1034)

    Problem Description A number of students sit in a circle facing their teacher in the center. Each st ...

  5. HDU1034 Candy Sharing Game

    Problem Description A number of students sit in a circle facing their teacher in the center. Each st ...

  6. HDU 1034 Candy Sharing Game (模拟)

    题目链接 Problem Description A number of students sit in a circle facing their teacher in the center. Ea ...

  7. sicily 1052. Candy Sharing Game

    Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description A number of students sit in a circle ...

  8. 九度OJ 1145:Candy Sharing Game(分享蜡烛游戏) (模拟)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:248 解决:194 题目描述: A number of students sit in a circle facing their teac ...

  9. HDU-1034 Candy Sharing Game 模拟问题(水题)

    题目链接:https://cn.vjudge.net/problem/HDU-1034 水题 代码 #include <cstdio> #include <algorithm> ...

随机推荐

  1. hdu 5671 矩阵变换

    Matrix Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  2. <Win32_5>深入浅出Win32的计时器

    说起时间,对于我们搞IT的人来说,那是要多重要有多重要.我觉得有价值的时间是给有抱负和有才能的人准备的,因为他们会充分利用,不会让时间失望…… 呵呵,有点儿说远了,还是回归主题吧 Win32的计时器其 ...

  3. CI框架uri去掉index.php

    CI框架的入口是index.php,所以url实际上要多出一个index.php,非常不美观.我使用的是apache服务器,要开启mod_rewrite服务才可以. sudo a2enmod rewr ...

  4. JMS-activeMQ

    参考资料: http://yuxisanren.iteye.com/blog/1912587 .JMS简介:JMS即Java Message Service,是Java 程序创建.发送.接收和读取企业 ...

  5. 简单的thinkPHP3.2运行实例。

    在上一篇的环境基础下. 我们用zendstudio12.5版本编写我们的代码.具体的下载方式在这里就不多做注明了.自己百度就可以搞定. 首先我们用zendstudio12.5 导入我们从网上随处都可以 ...

  6. php的一些小笔记-文件函数(1)

    ---恢复内容开始--- 与文件操作相关的函数有一部分可以和linux命令比较,但是我觉得可能还是linux上使用的比较频繁 如:chown,chmod,chgrp,rename,touch,link ...

  7. 如何从数据库(实体提供者)读取安全用户(转自http://wiki.jikexueyuan.com/project/symfony-cookbook/entity-provider.html)

    Symfony 的安全系统可以通过活动目录或开放授权服务器像数据库一样从任何地方加载安全用户.这篇文章将告诉你如何通过一个 Doctrine entity 从数据库加载用户信息. 前言 在开始之前,您 ...

  8. 使用PULL方式解析XML资源文件下面的xml文件

    public class MainActivity extends Activity { private Button btn = null; private List<Map<Strin ...

  9. POJ 2653 Pick-up sticks(线段相交)

    题意:给定n个木棍依次放下,要求最终判断没被覆盖的木棍是哪些. 思路:快速排斥以及跨立实验可以判断线段相交. #include<algorithm> #include<cstdio& ...

  10. C++ crash 堆栈信息获取(三篇文章)

    最近在做程序异常时堆栈信息获取相关工作,上一篇文章成功的在程序creash时写下了dump文件,而有些情况写dump文件是 不可以的,比如在jni开发时,C++只做底层处理,而整个项目是android ...