-
杭电2015题的题干和输入输出格式要求如下:
- 解题思路:本题利用数组存储数据去解决,首先根据输入的n和m,计算得到b和d。b代表符合有m个数的组数,d代表最后不足m个的剩余实际数量。然后先按组循环计算得到每一组的平均值并输出,计算完毕之后再判断是否还有剩余值,如果有再求剩余值的平均值。
- 解决代码:
1 #include<stdio.h> 2 int main() 3 { 4 int n,m,b,d; 5 int sum,c,count; 6 7 while(scanf("%d %d",&n,&m)!=EOF) 8 { 9 b=n/m,d=n%m; //b代表有m个数的组数,d代表剩下的数的个数 10 c=1,count=0,sum=0; 11 int i=0; 12 int a[100]={0}; 13 for(c=1;c<=b;c++) //m个数的组数 14 { 15 for(i=1;i<=m;i++) 16 { 17 a[i]=a[i-1]+2; 18 sum+=a[i]; 19 count++; 20 } 21 printf("%d",sum/m); //输出平均值 22 a[0]=a[i-1]; //初始化操作,方便下一次循环运算 23 sum=0; 24 if(count<n) printf(" "); //若count==n,那么不输出空格 25 } 26 if(d!=0) 27 { 28 int sum_end=0; 29 for(i=0;i<d;i++) 30 { 31 sum_end+=a[i]+2; 32 a[i+1]=a[i]+2; 33 } 34 printf("%d",sum_end/d); 35 } 36 printf(" "); 37 } //end while 38 39 return 0; 40 }
- 心得体会:虽然这道题不是一道难题,但是还是花了很多时间,总的来说还是自己解题思路不够清晰,有一些小的细节做得不到位,导致耽误了很多的时间。无论解什么样的题,都要自己独立思考去实现,去调试代码。只有这样影响才会深刻,为了花短时间AC而去看别人的思路,其实是很难及时消化掌握的。