羽渡尘552 2021-11-05 22:58 采纳率: 100%
浏览 16
已结题

杭电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;
}
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-06 07:23
    关注

    问题在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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 11月5日

悬赏问题

  • ¥15 软件定义网络mininet和onos控制器问题
  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。