杭电oj2015题显示runtime error标题长度小于10个字符,请进行修改!

img


2015题提交后在oj上显示runtime error,但我自己的编译器是可以跑并且出正确结果的。
这是我的代码:



#include <stdio.h>
#include <math.h>
int main()
{
    int a[100]= {2,};
    int i,j,k;
    int ISPRIME=1;
    int sum=0;
    for(i=1; i<100; i++) {
        a[i]=a[i-1]+2;
    }
    int n,m;
    int x,y;
    while(scanf("%d%d",&n,&m)!=EOF) {
        x=n%m;
        y=n/m;
        k=m;
        if(x==0) {
            ISPRIME=1;
            for(j=1,i=0; j<=y; j++) {
                m=j*m;
                for(i; i<m; i++) {
                    sum+=a[i];
                    
                }
                i=m;
                if(ISPRIME==1) {
                    printf("%d",sum/k);
                    ISPRIME=0;
                }
                else {printf(" %d",sum/k);}
                sum=0;
            }
            
        }else {
            ISPRIME=1;
            for(j=1,i=0; j<=y; j++) {
                m=j*m;
                for(i; i<m; i++) {
                    sum+=a[i];
                    
                }
                i=m;
                if(ISPRIME==1) {
                    printf("%d",sum/k);
                    ISPRIME=0;
                }
                else {printf(" %d",sum/k);}
                sum=0;
            }
            m=m*y;
            k=n-m;
            for(i=m;i<n;i++){
                sum+=a[i];
            }
            printf(" %d",sum/k);
            sum=0;
        }
        printf("\n");
    }

    return 0;
}

问题在m=jm上,这样m是会累加的。比如m=2 ,j=1,那么m=jm=2没错,再次运行,m=2,j=2,m=jm=4,序列中2-4求和也对,样例测试你能过。但是在下一组就出问题了,
m=4,j=3,m=j
m=43=12,序列求和就是4-12啦。
另外定义一个变量t,使t=j
m,这样就不会累加了

#include <stdio.h>
#include <math.h>
int main()
{
    int a[100]= {2,};
    int i,j,k;
    int ISPRIME=1;
    int sum=0;
    for(i=1; i<100; i++) {
        a[i]=a[i-1]+2;
    }
    int n,m,t;
    int x,y;
    while(scanf("%d%d",&n,&m)!=EOF) {
        x=n%m;
        y=n/m;
        k=m;
        if(x==0) {
            ISPRIME=1;
            for(j=1,i=0; j<=y; j++) {
                t=j*m;
                for(i; i<t; i++) {
                    sum+=a[i];
                }
                i=t;
                if(ISPRIME==1) {
                    printf("%d",sum/k);
                    ISPRIME=0;
                }
                else {printf(" %d",sum/k);}
                sum=0;
            }
        }else {
            ISPRIME=1;
            for(j=1,i=0; j<=y; j++) {
                t=j*m;
                for(i; i<t; i++) {
                    sum+=a[i];
                }
                i=t;
                if(ISPRIME==1) {
                    printf("%d",sum/k);
                    ISPRIME=0;
                }
                else {printf(" %d",sum/k);}
                sum=0;
            }
            m=m*y;
            k=n-m;
            for(i=m;i<n;i++){
                sum+=a[i];
            }
            printf(" %d",sum/k);
            sum=0;
        }
        printf("\n");
    return 0;
}