菜鸟七飞 2022-04-02 10:03 采纳率: 83.3%
浏览 72
已结题

算法题上交后显示部分正确,找不出哪里错误

这个是题目

img

有部分测试例子结果是正确的,有一个运行超时,一个答案错误,求帮助

↓↓以下是出问题的代码↓↓

#include<stdio.h>
#include<math.h>
int main(){ 
    int N;
    char ch[100];
    long long a[100],b[100],i;
    scanf("%d",&N);
    for(i=0;i<N;i++)
    {
        scanf("%lld",&a[i]);
        scanf("%c",&ch[i]);
        scanf("%lld",&b[i]);
    }
    long long n=labs(b[0]);
    int m;
    while(1){
        m=0;
        for(i=0;i<N;i++)
        {
            if(n%b[i]!=0){
                m=1;
                break;
            }
        }
        if(m==0) break;
        n++;
    }
    for(i=0;i<N;i++)
    {
        a[i]*=(n/b[i]);
        b[i]*=(n/b[i]);
    }
    long long suma=0,sumb=b[0];
    for(i=0;i<N;i++){
        suma+=a[i];
    }
    long long k,max=(suma>=sumb)?suma:sumb;
    for(i=max;i>0;i--){
        if(suma%i==0&&sumb%i==0){
            k=i;
            break;
        }
    }
    int j=0;
    if(labs(suma)<labs(sumb)){
        suma/=k;
        sumb/=k;
        printf("%lld/%lld\n",suma,sumb);    
    }
    else if(suma%sumb==0&&labs(suma)>=labs(sumb)) printf("%d\n",suma/sumb);
    else{
        suma/=k;
        sumb/=k;
        for(i=0;i<n;i++){
            if(suma<sumb){
                printf("%d %lld/%lld\n",j,suma,sumb);
                break;
            }
            suma-=sumb;
            j++;
        }
    }
    return 0;
}
  • 写回答

2条回答

      报告相同问题?

      问题事件

      • 已结题 4月9日
      • 已采纳回答 4月2日
      • 修改了问题 4月2日
      • 修改了问题 4月2日
      • 展开全部

      悬赏问题

      • ¥20 怎么将vs中的程序同步到sql中的表中
      • ¥15 用flask框架接收前端上传的文本文件后怎么读取该文件
      • ¥15 有没有嵌入式ubuntu的朋友
      • ¥50 diddler Burp Suite
      • ¥20 关于UE5.1的问题,求专家解答!
      • ¥30 关于#爬虫#的问题:百度为您找到相关结果约100,000,000个 但只展现70页 有没有可能提取出来全部的搜索结果
      • ¥40 IIS部署API,弄了几天没弄出来,希望带佬远程帮我弄一下,有偿
      • ¥15 关于#c##的问题:winform中利用delegate更新ui的顺序错误
      • ¥15 qt5.6.1读取oracle8中文数据乱码
      • ¥15 matlab支持向量机预测部分遇到了问题