問題分段故障
鑑於N和M德克斯特想知道有多少對A,B(1 < =一個< b < = N)是存在使得(a + b)爲例如,當N = 4且M = 3時,存在兩個可能的對,其總和可以被M整除並且它們是(1,2)和(2,4)。 輸入
第一行輸入包含T(< = 100000),它是測試用例的數量。接下來的T行中的每一行包含兩個整數N(1 < = N < = 10^9)和M(2 < = M < = 10^9)。 輸出
如前所述,每個測試用例輸出一行,即對數(a,b)。
這是codechef提出的問題。提交答案後,我得到分段錯誤error.please幫我用正確的答案。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,t,flag,j,x,k,m[100],n[100];
scanf("%d",&t);
for(i=1;i<=t;i++)
scanf("%d %d",&n[i],&m[i]);
for(x=1;x<=t;x++){
k=1;
flag=0;
for(i=m[x];i<=((2*n[x])-1);i=(m[x]*k)){
for(j=1;j<=(i/2);j++){
if(((i-j)<=n[x]) && (j!=(i-j))){
flag=flag+1;
}
}
k++;
}
printf("%d\n",flag);
}
}
在'gdb'或類似的調試器中運行代碼。它會讓你打印segfault的堆棧軌跡。 –
請更慷慨地使用空格和換行符。你的代碼非常緊湊,幾乎不可能閱讀。這不像你的程序運行速度會變慢,否則你的硬盤空間不足。 –
在C中,數組'a [N]'從索引0開始索引到N-1。因此,習慣用語C通常運行循環'for(i = 0; i