标签:acm 模拟 candy sharing game hdu1034
Total Submission(s): 2897 Accepted Submission(s): 1811
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
15 14 17 22 4 8HintThe 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.
/**************************************
***************************************
* Author:Tree *
*From :http://blog.csdn.net/lttree *
* Title : Candy Sharing Game *
*Source: hdu 1034 *
* Hint : 模拟题 *
***************************************
**************************************/
#include <iostream>
using namespace std;
int arr[100001];
bool judge(int n)
{
int i;
for(i=2;i<=n;++i)
if( arr[1]!=arr[i] )
return false;
return true;
}
int main()
{
int i,test,step;
while( cin>>test && test )
{
for(i=1;i<=test;++i)
cin>>arr[i];
step=0;
while( !judge(test) )
{
arr[0]=arr[test];
for(i=test;i>0;--i)
{
arr[i]=(arr[i-1]/2+arr[i]/2);
// 位运算判断奇偶,肯定比%2快
if( arr[i]&1 ) ++arr[i];
}
++step;
}
cout<<step<<" "<<arr[1]<<endl;
}
return 0;
}
ACM-模拟之Candy Sharing Game——hdu1034
标签:acm 模拟 candy sharing game hdu1034
原文地址:http://blog.csdn.net/lttree/article/details/24695925