c++ - 为什么我会收到大整数的分段错误?
问题描述
我写了一段代码如下:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
long long int n,s,p,q,i;
cin>>n>>s>>p>>q;
long long int a[n];
a[0] = s%(long long int)pow(2,31);
for(i=1;i<n;i++)
{
a[i] = a[i-1]*p+s%(long long int)pow(2,31);
}
long long int count=1;
for(i=1;i<n;i++)
{
if(a[i]!=a[i-1])
count++;
}
cout<<count;
return 0;
}
当我提供输入时出现分段错误
100151543 5115 5153 531 stderr如下:
Reading symbols from Solution...done.
[New LWP 134199]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./Solution'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000000004010f1 in main () at Solution.cpp:13
13 a[0] = s%(long long int)pow(2,31);
To enable execution of this file add
add-auto-load-safe-path /usr/local/lib64/libstdc++.so.6.0.25-gdb.py
line to your configuration file "//.gdbinit".
To completely disable this security protection add
set auto-load safe-path /
line to your configuration file "//.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual. E.g., run from the shell:
info "(gdb)Auto-loading safe path"
问题是hackerrank:https ://www.hackerrank.com/challenges/bitset-1/problem
解决方案
long long int a[n];
不会对你有任何好处,就像每个人都说最好使用向量,你的代码应该是这样的:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
long long int n,s,p,q,i;
cin>>n>>s>>p>>q;
vector<long long int> a;
a.resize(n);
a[0] = s%(long long int)pow(2,31);
for(i=1;i<n;i++)
{
a[i] = a[i-1]*p+s%(long long int)pow(2,31);
}
long long int count=1;
for(i=1;i<n;i++)
{
if(a[i]!=a[i-1])
count++;
}
cout<<count;
return 0;
}
推荐阅读
- c++ - 没有“/”怎么做除法?
- sql-server - 如何修复“不存在从对象类型 System.Data.SqlClient.SqlParameter 到已知托管提供程序本机类型的映射。” ASP.Net 中的错误
- c++ - 我正在尝试在 ALLEGRO c++ 中使用许多墙壁进行整理
- sql - Athena:按比例查询耗尽的资源
- algorithm - 绘制手写文本的算法
- c# - 来自不同线程的 C# WPF 动画
- elasticsearch - Elasticsearch 6.4.2 无法启动
- ios - iOS:添加时区而不更改/转换时间值
- json - 将字符串数组从 curl 转换为文件中的分隔新行
- php - 我无法使用 docker 配置环境变量