一切困难都能打倒我 2023-08-10 15:59 采纳率: 87.1%
浏览 18
已结题

Simple division c语言代码

想知道我的代码哪里还有逻辑漏洞,又一个很长、正负相交的样例过不了。
题目描述
被除数n和除数d之间的整数除运算产生商q和余数r。q是最大化qd的整数,使得qd≤n,并且r=n−q*d。
给出一组整数,存在一个整数d,使得每个给出的整数除以d,所得的余数相同。

输入输出格式
输入格式
输入的每行给出一个由空格分隔的非零整数序列。每行的最后一个数字是0,这个0不属于这一序列。一个序列中至少有2个,至多有1000个数字;一个序列中的数字并不都是相等的。输入的最后一行给出单个0,程序不用处理该行。

输出格式
对于每一行输入,输出最大的整数,使得输入的每一个整数除以该数,余数相同。

#include <stdio.h>
#include<math.h>
int gcd(int a,int b);
int main()
{
    int n=0,i=0,k=0,t=0,max=0,min=0;
    int    a[1001]={0},b[1000]={0};
    while(scanf("%d",&a[n])!=EOF)
    {
//printf("%d\n",a[n]);
        if(a[0]==0) {n=0;i=0;continue;}
        if(a[n]==0) {printf("%d\n",t);n=0;i=0;continue;}//一个样例结束
        
        if(n>0)
        b[i]=abs(a[n]-a[n-1]);//一阶差序列;绝对值
        if(i>0) 
           {
               if(b[i]>=b[i-1])
               {max=b[i];min=b[i-1];}
               else
               {max=b[i-1];min=b[i];}
               t=gcd(max,min);//a>b
           }
        i++;    
        n++;
    }
    return 0; 
}

int gcd(int a,int b)
{
//printf("%d %d\n",a,b);
    if(b==0)
        return(a);
    else
        gcd(b,a%b);
}

img

  • 写回答

2条回答 默认 最新

  • 关注

    是我差值那里出了问题,应该是前两项的差值的最大公因数和后面每两项的差值进行计算。

    
    #include <stdio.h>
    #include<math.h>
    int gcd(int a,int b);
    int main()
    {
        int n=0,i=0,k=0,t=0,max=0,min=0;
        int    a[1001]={0},b[1000]={0};
        while(scanf("%d",&a[n])!=EOF)
        {
    //printf("%d\n",a[n]);
            if(a[0]==0) {n=0;i=0;continue;}
            if(a[n]==0) {printf("%d\n",t);n=0;i=0;continue;}//一个样例结束
            
            if(n>0)
            b[i]=abs(a[n]-a[n-1]);//一阶差序列;绝对值
            if(i==1) 
               {
                    if(b[1]>=b[0])
                   {max=b[1];min=b[0];}
                   else
                   {max=b[0];min=b[1];}
                   t=gcd(max,min);//a>b
               }
            if(i>1){t=gcd(t,b[i]);}
            i++;    
            n++;
        }
        return 0; 
    }
    
    int gcd(int a,int b)
    {
    //printf("%d %d\n",a,b);
        if(b==0)
            return(a);
        else
            gcd(b,a%b);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月11日
  • 已采纳回答 8月11日
  • 创建了问题 8月10日

悬赏问题

  • ¥15 报酬10000,做一个简单的换汇网站
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢