2015-01-10 82 views
-1

http://www.spoj.com/problems/FCTRL2/
我的代碼在Spoj中顯示編譯錯誤,雖然在我的編譯器中運行正確。
** IDE - 碼塊**沒有定義SPOJ - 小的因子分解

int cal(int); 


int main() 
{ 
    int i,t; 
    int n[100]; 
    scanf("%d",&t); 
    for(i=0;i<t;i++) 
    { 
     scanf("%d",&n[i]); 
    } 

for(i=0;i<t;i++) 
{ 
    printf("%d",cal(n[i])); 
    printf("\n"); 
} 
return 0; 
} 
int cal(int x) 
{ 
    int j,a=1; 
for(j=x;j>=1;j--) 
{ 
a=a*j; 


} 
return a; 


} 
+1

一個簡單的問題:如果輸入't'大於'100'?另外,請正確縮進您的代碼。你可以請張貼'錯誤'嗎? –

+0

您必須能夠計算'100!',但不能用簡單的'int'表示。 – BLUEPIXY

+0

請正確縮進您的代碼。這是不可讀的。 – alk

回答

1

printfscanf。您需要包含stdio庫。

我得到這個錯誤在本地:

test.c: In function ‘main’: 
test.c:8:9: warning: incompatible implicit declaration of built-in function ‘scanf’ 
     scanf("%d",&t); 
     ^
test.c:16:16: warning: incompatible implicit declaration of built-in function ‘printf’ 
       printf("%d",cal(n[i])); 
       ^
+0

真的你認爲這是問題嗎? – Gopi

+0

@戈皮也許不是,但你永遠不知道!! :-)讓我們等待OP發佈他/她的_error_(s)。 –

+0

好我沒有故意包含頭文件,並且是「數據類型」是錯誤。 – Beginner

0

對於需要計算階乘每個整數輸入。對於像python或java這樣的內置支持大整數類型的語言來說,這非常簡單。儘管使用C/C++的人或者沒有內置biginteger類型的語言給人們帶來了困難。

現在,可存儲在無符號32位整數中的最大數是2^32 - 1,而在無符號64位整數中是2^64 - 1。有超過150個十進制數字。前面提到的數據類型可以存儲分別具有最多9位和19位十進制數字的數字。所以,你需要找到一種方法來存儲我們將得到的150位數字作爲答案。考慮使用數組來存儲每個小數。