30/09/2018, 20:39

Chương trình C++ gặp lỗi SIGSEGV khi submit bài giải lên spoj?

Mình có làm một bài toán trên SPOJ .
Link đề tại đây:

spoj.com

SPOJ.com - Problem PTIT016G

...


Link code mình làm :
http://codepad.org/sNkseMVA

#include
using namespace std;

int main() {
long n,k,M,gt1=1,gt2=1,gt3=1;
//cout<<“Nhap n,k,M: “<<endl;
cin>>n; cin>>k;cin>>M;
if(k>n) return 0;
int c[10000];
int t=0;
for(int i=1;i<=k;i++){
// cout<<” Nhap so c_”<<i<<": ";
cin>>c[i];
}
for(int i=1;i<=k;i++){
t = t + c[i];
}
int u=n+k-t-1;
int v=n-t;
int x=k-1;
for(int i=2;i<=u;i++){
gt1=gt1i;
}
for(int i=1;i<=v;i++){
gt2=gt2
i;
}
for(int i=2;i<=x;i++){
gt3=gt3i;
}
int a = (gt1/(gt2
gt3)) % M ;
cout<<a;
return 0;
}

Các cao thủ vào giúp mình xem sao mình lại gặp lỗi này và sửa giúp mình với.
Mình sửa mãi vẫn không được.
Xin cảm ơn .

Gió viết 22:54 ngày 30/09/2018
  1. Đề không nói giới hạn k, có thể k>10000 phần tử. Nên việc khai báo mảng c như vậy có thể sẽ thiếu bộ nhớ
  2. Thuật toán này sẽ bị tràn số. Nên % sau mỗi lần nhân và sử dụng long long để có thể nhân 2 số 109
  3. Đây là một bài tổ hợp thông thường nên có cần thiết mảng c không vì nói chung bạn chỉ quan tâm đến tổng giá trị của chúng để tính kết quả
Cáo Già viết 22:48 ngày 30/09/2018

Bạn có thể sửa code giúp mình được không ?
Trình của mình còn Gà quá

Cáo Già viết 22:46 ngày 30/09/2018

Ai chỉ giúp mình với đi :(((((((((((((((((((((((((((

Ai Android viết 22:49 ngày 30/09/2018

Nghĩ theo hướng lấy t= n- tổng(ci)
thì nhiệm vụ còn lại chỉ là tính số cách tạo thành tổng bằng t ít hơn hoặc bằng k số hạng =))
Đề cho như … ít nhất phải có giới hạn n chứ =))
F[s,c]+=f[s-i,c-1] i =0,s

Cáo Già viết 22:55 ngày 30/09/2018

Thốn =((((
Mãi ko sửa được code đây.

Bài liên quan
0