数组的加减运算(大整数)

问题描述 投票:0回答:1

我在处理大整数(10 ^ 8和10 ^ 16(区间之间的数字总和)时遇到麻烦)。我当前的代码不是AC。它正在获得80/100的接受度,我猜是因为极限溢出?还有其他避免数组操作的方法吗?如果没有,我该如何解决数组加减的以下问题?

问题:塔斯尼姆(Tasnim)来参观因荔枝生产而闻名的迪纳杰布尔(Dinajpur)。今天,她来到荔枝园,发现了一件奇怪的事。果园所有者将荔枝放入一些不同大小的桶中,这些桶成排排列,这样,每个下一个桶都比前一个桶多容纳一个荔枝。她还了解到,最小的存储桶恰好包含M个荔枝,最大的存储桶恰好包含N个荔枝。 Tasnim很想知道所有水桶里有多少荔枝。但是,她并不是数学专家。而且,她也不知道有多少个水桶。因此,她正在寻求您的帮助。现在,您的任务是帮助Tasnim确定存储桶的数量以及存储桶中包含的荔枝的总数。

让我举个例子,最小的水桶恰好有5个荔枝,最大的水桶恰好有11个。因此,在7个水桶中总共有5 + 6 + 7 + 8 + 9 + 10 + 11 = 56个荔枝。

输入在每个输入文件中将有多个测试用例,其中每个测试用例包含两个整数M和N(0 8]),分别表示最小和最大存储桶中的荔枝数量。] >

当M和N都等于零(即M为0且N为0时,输入文件将终止,并且每个输入文件最多包含100个测试用例。

输出

对于每种情况,请打印存储桶数和荔枝总数(以空格分隔)。不要忘记为每个测试用例打印空白行。我的代码:

#include <stdio.h>
#include<string.h>
int main(){

  long unsigned int m,n,i=0,num,x=0, total;

    while(x<100){
    scanf("%lu %lu",&m,&n);
    if(m==0 && n==0){
    break;
    }
    else{
        num=(n+1)-m;
        total=(num*(m+n))/2;
        printf("%lu %lu\n",num,total);
    }
    x++;
    }
    return 0;
}```

我在处理大整数(10 ^ 8和10 ^ 16(区间之间的数字总和)时遇到麻烦)。我当前的代码不是AC。我猜它正在获得80/100的接受度]

c int overflow biginteger
1个回答
0
投票

以下建议的代码:

  1. 干净地编译
© www.soinside.com 2019 - 2024. All rights reserved.