HDU 1034 Candy Sharing Game
2008-08-28 19:07
375 查看
简单模拟,题目大意是n个孩子围一圈,老师喊一声就每人把手中的糖果的一半分给自己右边的人,如果此时手中是奇数个的时候,就从老师那里要一颗变成偶数再除2。给定初始状态,每个孩子手上都有偶数个糖果,问老师喊几声,所有人手上都有一样多的糖果,个数是几个?
直接模拟。因为是同时给,所以如果用一个数组线性的往后传递,是错误的。开两个数组,一个传递前个数pre[],一个保存在传递后的个数now[],每一轮结束以后将传递前的个数更新。pre[i]=now[i],然后循环。
利用qsort排序来比较大小
#include <iostream>
#include <cstdlib>
using namespace std;
int now[101],pre[101],cnt;
int cmp(const void *a,const void *b)
{
return * (int *)a - *(int *)b;
}
int circe(int n)
{
int i;
cnt = 0;
while (1)
{
qsort(now,n,sizeof(now[0]),cmp);
if (now[0] == now[n-1])
break;
for (i = 0;i < n;i++)
{
now[(i+1)%n] = pre[(i+1)%n]/2+pre[i]/2;
if(now[(i+1)%n]%2!=0)
now[(i+1)%n]++;
}
for (i = 0;i < n;i++)
{
pre[i] = now[i];
}
cnt++;
}
return cnt;
}
int main()
{
int n,i,num;
while (cin >> n && n != 0)
{
for (i = 0;i < n;i++)
{
cin >> now[i];
pre[i] = now[i];
}
num = circe(n);
cout << num << " " << now[0] << endl;
}
return 0;
}
直接模拟。因为是同时给,所以如果用一个数组线性的往后传递,是错误的。开两个数组,一个传递前个数pre[],一个保存在传递后的个数now[],每一轮结束以后将传递前的个数更新。pre[i]=now[i],然后循环。
利用qsort排序来比较大小
#include <iostream>
#include <cstdlib>
using namespace std;
int now[101],pre[101],cnt;
int cmp(const void *a,const void *b)
{
return * (int *)a - *(int *)b;
}
int circe(int n)
{
int i;
cnt = 0;
while (1)
{
qsort(now,n,sizeof(now[0]),cmp);
if (now[0] == now[n-1])
break;
for (i = 0;i < n;i++)
{
now[(i+1)%n] = pre[(i+1)%n]/2+pre[i]/2;
if(now[(i+1)%n]%2!=0)
now[(i+1)%n]++;
}
for (i = 0;i < n;i++)
{
pre[i] = now[i];
}
cnt++;
}
return cnt;
}
int main()
{
int n,i,num;
while (cin >> n && n != 0)
{
for (i = 0;i < n;i++)
{
cin >> now[i];
pre[i] = now[i];
}
num = circe(n);
cout << num << " " << now[0] << endl;
}
return 0;
}
相关文章推荐
- HDU 1034 Candy Sharing Game
- hdu 1034 Candy Sharing Game
- HDU杭电1034 Candy Sharing Game
- HDU 1034 Candy Sharing Game
- hdu 1034 Candy Sharing Game
- HDU 1034 Candy Sharing Game
- 模拟:HDU1034-Candy Sharing Game
- hdu 1034 Candy Sharing Game
- hdu 1034 Candy Sharing Game(暴力模拟)
- HDU 1034 Candy Sharing Game 模拟
- HDU 1034 Candy Sharing Game
- HDU-1034-Candy Sharing Game(C++ && 简单模拟)
- HDU1034 Candy Sharing Game(java)
- HDU 1034 Candy Sharing Game 模拟题
- HDU:1034 Candy Sharing Game
- ZOJ 1814/HDU 1034/POJ 1666 Candy Sharing Game
- HDU 1034 Candy Sharing Game(水题)
- hdu 1034 Candy Sharing Game【水题 模拟】
- hdu 1034 Candy Sharing Game
- HDU 1034 Candy Sharing Game