Bu programla neden bir segmentasyon hatası (SIGSEGV) alıyorum.Faktöriyel hata bulmada bölümlendirme hatası
100, 200 gibi çok sayıdaki faktörleri bulmaya çalışıyorum ama neden bazı durumlarda bölümleme hatası olduğunu bilmiyorum. Bana yardım et.
Kısıtlayıcı:
- 1 ≤ T ≤ '
a
dizi 5000 elemanları içerebilir, ancak don 100000- 1 ≤ N 100000
#include<stdio.h>
int main()
{
long long int t,mod=1589540031;
long long int a[5000];
long long int n,i,j,temp,k,x;
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
a[0]=1;
k=1;
temp = 0;
for(i=1;i<=n;i++)
{
for(j=0;j<k;j++)
{
x = a[j]*i+temp;
a[j]=x%10;
temp = x/10;
}
while(temp>0)
{
a[k]=temp%10;
temp = temp/10;
k++;
}
}
for(i=k-1;i>=0;i--)
printf("%lld",a[i]%mod);
printf("\n");
}
return 0;
}
Hangi giriş için segfault'ları tam olarak alıyorsunuz? Bu bilgi sorunun bir parçası olmalı. –
Kodunuzu düzgün bir şekilde girebilir misiniz? – hivert
Orijinal ödeve bağlantı vermiyorsunuz, ancak _n! _ Modulo _m_ değerini hesaplamanız gerekiyormuş gibi görünüyor. Eğer öyleyse, çarpmayı bir dizi ile yapmanız gerekmez. Sadece boyunca [modüler aritmetik] (https://en.wikipedia.org/wiki/Modular_arithmetic) kullanın. (0 ile 9 arasında olan rakamları yazdırırken kalan kısmı almak anlamsızdır.) –