gpt4 book ai didi

c - long int、long long int 和 int 的范围

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:05 26 4
gpt4 key购买 nike

我必须打印数组 A 元素的乘积 mod 10^9+7 ,应该有N数组中的元素和约束是 1<=N<=10^31<=A[i]<=10^3 .

我写的代码

#include<stdio.h> 
int main()
{
int N, pro = 1;
scanf("%i", &N);
int arr[N];
for (int i = 0; i<N; i++) {
scanf("%i", &arr[i]);
pro = (pro*arr[i]) % (1000000007);
}
printf("%i", pro);
}

给出了错误的答案,但是当我替换 int arr[N] 时至 long int arr[N]并将其精度说明符更改为 %li它给出了正确的输出。我的困惑是当数组元素的上限仅为 10^3 时那么为什么使用 long int 有效而不仅仅是 int .我正在使用 64 位 Windows 操作系统,我提供的输入是 3 位数字作为数组元素,例如 568,253 等,开头没有任何 0。

最佳答案

考虑 N = 3 且 A = [10^3,10^3,10^3] 的情况。第二次迭代后,您的乘积将为 10^9。在第三次迭代中,您的乘积将为 (10^9 * 10^3)​​ % 1000000007。在进行模运算之前,乘积会产生整数溢出,从而产生 WA。

关于c - long int、long long int 和 int 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51098133/

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