@[cjcjcjminecraft](/user/1311541)
定义 `a[n]` 调用的 `n` 可能是垃圾值,所以并不能保证 `a[n]` 有对应的储存空间。
另外 `long long` 的值范围只有 $-9223372036854775808\sim 9223372036854775807$,在这里是不够的,因为
$$100^{50}=10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000$$
所以会超出 `long long` 表示范围从而溢出,溢出后的 `long long` 值是不正确的。
by Terrible @ 2024-05-10 20:49:35
@[cjcjcjminecraft](/user/1311541) 会爆数据
by LHM_zs @ 2024-05-10 20:50:18
```c
#include<iostream>
using namespace std;
int main(){
long long n,a[100005],sum=1;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sum*=a[i];
if(sum>1000000) {
cout<<">1000000";
return 0;
}
}
cout<<sum;
return 0;
}
```
@[cjcjcjminecraft](/user/1311541)
by LHM_zs @ 2024-05-10 20:51:14
可以尝试改成这样子:
```cpp
#include<iostream>
using namespace std;
int main(){
long long n;
cin>>n;
long long a[n],sum=1;//a[n] 必须在输入 n 后定义
for(int i=0;i<n;i++){
cin>>a[i];
sum*=a[i];
if(sum>1000000){
cout<<">1000000";
return 0;
}
}
cout<<sum;
return 0;
}
```
也可以不使用数组采用临时值的方式读入。
```cpp
#include<iostream>
using namespace std;
int main(){
long long n;
cin>>n;
long long a,sum=1;
for(int i=0;i<n;i++){
cin>>a;
sum*=a;
if(sum>1000000){
cout<<">1000000";
return 0;
}
}
cout<<sum;
return 0;
}
```
by Terrible @ 2024-05-10 20:52:36
边做乘法变比较,要不然会爆ll
by Louisshen @ 2024-05-10 20:57:53
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
long long ans=1;
int main()
{
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
ans*=a;
if(ans>1e6)
{
cout<<">1000000";
return 0;
}
}
cout<<ans;
return 0;
}
```
边输入边判断,不需要数组。
by keep_shining @ 2024-05-10 21:08:54
楼上正解,需要在输入后再声明变量
by shimucheng @ 2024-05-10 21:11:27
@[Terrible](/user/195942) 谢谢帮助
by cjcjcjminecraft @ 2024-05-11 18:23:45
感谢各位大佬
by cjcjcjminecraft @ 2024-05-11 18:35:02
~~受徒儿一拜~~
by cjcjcjminecraft @ 2024-05-11 18:51:34