gpt4 book ai didi

C程序查找数字序列中缺失的整数

转载 作者:太空狗 更新时间:2023-10-29 15:45:50 29 4
gpt4 key购买 nike

给定一个由 n-1 个不同的正整数组成的序列,所有正整数都小于或等于整数“n”。您必须找到范围 [1,2,...,n] 中缺少的整数。不使用数组解决问题。

输入格式:一行包含整数“n”,其中 2<=n<=10,000第一行之后是一系列“n-1”个不同的正整数。请注意,序列可能没有任何特定顺序。

我使用数组获取代码

#include<stdio.h>
int main()
{
int i,j,n[9999],m,t;
scanf("%d",&m);
for(i=1;i<m;i++)
{
scanf("%d",&n[i]);
}
for(i=1;i<m;i++)
{
for(j=1;j<i;j++)
{
if(n[j]>n[j+1])
{
t=n[j];
n[j]=n[j+1];
n[j+1]=t;
}
}
}
for(i=2;i<m;i++)
{
if(n[i-1]!=n[i]-1)
{
printf("%d",n[i]-1);
break;
}
}
return(0);
}

如何在不使用数组的情况下做同样的事情?

最佳答案

逻辑很简单。您只需找到给定 n 的系列中连续数字的总和。

然后,现在将问题中提供的所有这些数字相加,以准确找到给定数字的总和。

不同之处在于您可以说这两个总和之间的差值是缺失的数字。

例如:- 假设 n = 6。

因此,您只需找到从 1,...,6 开始的 n 个连续整数之和为:- 6 * (6+1)/2 = 21。从 1 开始的 n 个连续整数之和的公式为 { n * (n+1)}/2.

然后,现在求出给定 n-1 个数字的总和。

例如,给出的数字是 1、2、4、5、6。那么他们的总和 = 1 + 2 + 4 + 5 + 6 = 18。

因此,缺失数=连续n个数之和-给定(n-1)个数之和=3。

关于C程序查找数字序列中缺失的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31770326/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com