很久没有打模拟题了,再次总结一下模拟题的做法:
仔细分析题意,弄清楚过程
理清楚模拟步骤,严格按照步骤编写代码
添加中间输出测试每步结果
虽然这是一个很简单的水题,但是没有松哥帮忙还是卡了很久,因为没有做好第一步,题目中是老师先吹哨,然后一圈所有同学同事将自己现有糖的一般分给下一个同学,结束后老师将现手里为奇数的糖的同学再多给一颗糖最后判断每个人的糖是否一样,如果一样结束游戏
代码:
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 ",step,num[0]); 34 } 35 return 0; 36 }