hdu_1034(模拟题)
Posted 有一天我们渺小的作为 或许 会巨大震动整个世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu_1034(模拟题)相关的知识,希望对你有一定的参考价值。
很久没有打模拟题了,再次总结一下模拟题的做法:
仔细分析题意,弄清楚过程
理清楚模拟步骤,严格按照步骤编写代码
添加中间输出测试每步结果
虽然这是一个很简单的水题,但是没有松哥帮忙还是卡了很久,因为没有做好第一步,题目中是老师先吹哨,然后一圈所有同学同事将自己现有糖的一般分给下一个同学,结束后老师将现手里为奇数的糖的同学再多给一颗糖最后判断每个人的糖是否一样,如果一样结束游戏
代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int num[100001]; 6 bool ck(int n){ 7 for(int i = 1; i < n ; i++){ 8 if(num[i]!=num[i-1]) return false; 9 } 10 return true; 11 } 12 int main() 13 { 14 int n; 15 while(~scanf("%d",&n)) 16 { 17 if(n==0) return 0; 18 for(int i = 0; i < n; i++) scanf("%d",&num[i]); 19 int step = 0; 20 while(1) 21 { 22 if(ck(n)) break; 23 int t; 24 int p = num[n-1]/2; 25 for(int i = 0; i < n; i++){ 26 t = num[i]/2; 27 num[i] = num[i]/2+p; 28 p = t; 29 if(num[i]%2==1) num[i]++; 30 } 31 step++; 32 } 33 printf("%d %d\n",step,num[0]); 34 } 35 return 0; 36 }
以上是关于hdu_1034(模拟题)的主要内容,如果未能解决你的问题,请参考以下文章