gpt4 book ai didi

c - 如何在不使用数组的情况下找到丢失的数字?

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:33 25 4
gpt4 key购买 nike

我必须在数字序列中找到缺失的数字。输入由一个介于 0 和 35000 之间的正整数 n 和 n 个范围为 [0..n] 的唯一数字组成。 (所以这个范围包含 n+1 个数字)。

我已经用 sum={n*(n+1)}/2misNum=sum-SumOfNum; 尝试了一些东西,但我做不到找到一种方法来完成这项工作。

我写了一些代码,但没有使用我之前提到的示例。显然,这段代码并不完整,但我不知道如何使它完整。

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *v[]) {
int length;
int num;

scanf("%d", &length);
/*scanf(???)*/

int goal=length;
int i;

for(i=0; i!=length; i++){
goal=goal+i-num[i];
};
return goal;
}

输入和结果应该是:

输入:2 "enter"0 2. 输出:1

输入:3“输入”0 3 1。输出:2

最佳答案

从0到n的所有数的和是

n(a1+an)/2 = (in your case a1 = 0 and an = n+1) n*(n+1)/2

所以缺失的数字是 n*(n+1)/2 - (长度后的输入数字之和)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* v[]) {
int length;
int i = 0;
int sum = 0;

scanf_s("%d", &length);

// calculate arithmetic series sum
auto series_sum = ((length + 1) * (length)) / 2;

while (i < length)
{
int next;
scanf_s("%d", &next);

sum += next;
++i;
}

printf("missing num is %d ", series_sum - sum);
}

关于c - 如何在不使用数组的情况下找到丢失的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076187/

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