羽渡尘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日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来