您的位置:首页 > 其它

杭电2015偶数求和(双解)-----20140725

2014-07-26 15:53 302 查看
#include<stdio.h>

main()

{ int n,m,i,j,t,sum,a[110];

 for(i=2;i<=100;i++)

 {   a[0]=0;

  a[1]=2;

  a[i]=a[i-1]+2;//将题中的数列 赋值给数组a

 }

 while(scanf("%d%d",&n,&m)!=EOF)

 { if(n%m==0)//第一种情况;

  {

   for(j=1;j<=n;j++)

   {

    sum+=a[j];

    if(j%m==0) //遇到m就输出;

    {

     printf("%d",sum/m); sum=0;

       if(j!=n)  printf(" ");

       else printf("\n");

    }

   }

  }

  else //第二种情况;

  {

   t=n%m;

   for(j=1;j<=n;j++)

   {

    sum+=a[j];

    if(j%m==0)

    { printf("%d ",sum/m); sum=0;}

       if(j==n)

       { printf("%d",sum/t);

         sum=0;

         if(j!=n)  printf(" ");

         else printf("\n");

       }

   }

  }

 }

 return 0;

}

 

 

 

另解(比较简单)----

 

#include "stdio.h"

 main()

{ int n,m,sum,x,num,i;

 while(~scanf("%d%d",&n,&m))

 {

  num=0;sum=0;x=2;

  for(i=n;i>0;i--)

  {

   sum+=x;num++;

   if(i==1) printf("%d\n",sum/num);

    else if(num==m)

   {

    printf("%d ",sum/num);

    sum=0;num=0;

   }

   x+=2;

  }

 }

    return 0;

}

PS:次数是按n减少来算,sum从2一直加,遇到m 就输出sum/m,然后清零。x的起始值一直在变,最后剩下的除以最后的num。优点在于不用分情况,num每次清零计算很方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: