私はハッカーの問題のためにこのコードを提出しようとしていましたが、私は を得ていますSIGSEGV Runtime error
です。私はこのエラーについて読んだが、私は自分のコードworking.Someを得ることができなかった無効なメモリ参照、配列の動的な初期化または範囲外の配列インデックスのために発生すると言う。SIGSEGV - ランタイムエラー
#include <stdio.h>
long long int f(long long int);
long long int gcd(long long int,long long int);
int main(){
long long int n,q,i;
scanf("%lld",&n);
long long int a[n];
for(i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
scanf("%lld",&q);
while(q--){
char ch;
long long int x,y,sum=0;
scanf("%c%lld%lld",&ch,&x,&y);
if(ch == 'U'){
a[x] = y;
}
else if(ch == 'C'){
for(i=x;i<=y;i++){
sum = (sum + f(a[i]))%1000000007;
}
}
printf("%lld\n",sum);
}
return 0;
}
long long int f(long long int t){
long long int i;
long long int res;
for(i=1;i<=t;i++){
res = (res + gcd(i,t))%1000000007;
}
return res;
}
long long int gcd(long long int x,long long int t){
int i;
long long int divisor=1;
for(i=1;i<=x;i++){
if(x%i == 0 && t%i == 0){
divisor = i;
}
}
return divisor;
}
どの行ですか? – fluter
あなたはVLAを記入していますが、このプログラムへの入力は何かを調べる必要があります。 –
しかし、そういうものが原因である可能性があります –