日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘

發布時間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言,如何存一個很大的數,比方說10000的階乘

我們使用最大的long?double?來定義,可是還是撐不下這么大的數,那么該怎么做?

long?double?sum?=?1;

int?i?=?1;

for?(i;?i?

{

sum?=?sum?*?(double)i;

}

cout<

------解決思路----------------------

采用數組來表示

------解決思路----------------------

僅供參考:#include?

#include?

#include?

using?namespace?std;

int?COMPARE(string?number1,?string?number2)?{

int?i,j;

int?length1?=?number1.size();

int?length2?=?number2.size();

if(number1.size()?==?0)?number1?=?"0";

if(number2.size()?==?0)?number2?=?"0";

j?=?0;

for(i?=?0;?i?

if(number1[i]?==?'0')?++j;

else?break;

}

number1?=?number1.substr(j);

j?=?0;

for(i?=?0;?i?

if(number2[i]?==?'0')?++j;

else?break;

}

number2?=?number2.substr(j);

length1?=?number1.size();

length2?=?number2.size();

if(length1?>?length2)?{

return?1;

}?else?if(length1?==?length2)?{

if(number1.compare(number2)?>?0)?{

return?1;

}?else?if(number1.compare(number2)?==?0)?{

return?0;

}?else?{

return?-1;

}

}?else?{

return?-1;

}

return?0;

}

string?PLUS(string?number1,string?number2)?{

int?i;

int?length1?=?number1.size();

int?length2?=?number2.size();

string?result="";

reverse(number1.begin(),?number1.end());

reverse(number2.begin(),?number2.end());

for(i?=?0;?i?

char?c?=?(char)(number1[i]?+?number2[i]?-?48);

result?=?result?+?c;

}

while(i?

result?=?result?+?number1[i];

++i;

}

while(i?

result?=?result?+?number2[i];

++i;

}

int?carry?=?0;

for(i?=?0;?i?

int?value?=?result[i]?-?48?+?carry;

result[i]?=?(char)(value?%?10?+?48);

carry?=?value?/?10;

}

if(carry?!=0?)?{

result?=?result?+?(char)(carry?+?48);

}

for(i?=?result.size()?-?1;?i?>=?0;?i--)?{

if(result[i]?!=?'0')?break;

}

result?=?result.substr(0,?i?+?1);

reverse(result.begin(),?result.end());

if(result.length()?==?0)?result?=?"0";

return?result;

}

string?MINUS(string?number1,string?number2)?{

int?i;

string?result?=?"";

int?length1?=?number1.size();

int?length2?=?number2.size();

if(COMPARE(number2,number1)?>?0)?{

return?"-"?+?MINUS(number2,?number1);

}

reverse(number1.begin(),number1.end());

reverse(number2.begin(),number2.end());

for(i?=?0;?i?

char?c?=?number1[i]?-?number2[i]?+?48;

result?=?result?+?c;

}

if(i?

for(;?i?

result?=?result?+?number1[i];

}

}

int?carry?=?0;

for(i?=?0;?i?

int?value?=?result[i]?-?48?+?carry;

if(value?

value?=?value?+?10;

carry?=?-1;

}?else?carry?=?0;

result[i]=(char)(value?+?48);

}

for(i?=?result.size()?-?1;?i?>=?0;?i--)?{

if(result[i]?!=?'0')break;

}

result?=?result.substr(0,?i+1);

reverse(result.begin(),?result.end());

if(result.length()==0)?result?=?"0";

return?result;

}

string?MULTIPLY(string?number1,?string?number2)?{

int?i,?j;

int?*iresult;

int?length1?=?number1.size();

int?length2?=?number2.size();

string?result?=?"";

reverse(number1.begin(),?number1.end());

reverse(number2.begin(),?number2.end());

iresult?=?(int*)malloc(sizeof(int)?*?(length1?+?length2?+?1));

memset(iresult,?0,?sizeof(int)?*?(length1?+?length2?+?1));

for(i?=?0;?i?

for(j?=?0;?j?

iresult[i+j]?+=?((number1[i]?-?48)?*?(number2[j]?-?48));

}

}

int?carry?=?0;

for(i?=?0;?i?

int?value?=?iresult[i]?+?carry;

iresult[i]?=?value?%?10;

carry?=?value?/?10;

}

for(i?=?length1?+?length2?-?1;?i?>=?0;?i--)?{

if(iresult[i]?!=?0)break;

}

for(;?i?>=?0;?i--)?{

result?=?result?+?(char)(iresult[i]+48);

}

free(iresult);

if(result?==?"")?result?=?"0";

return?result;

}

string?factorial(string?n)?{

string?temp?=?"1";

string?i;

for(i?=?"1";?COMPARE(i,?n)?<=?0;?i?=?PLUS(i,?"1"))?{

temp?=?MULTIPLY(temp,?i);

}

return?temp;

}

int?main(void)?{

cout?<

return?0;

}

------解決思路----------------------

弄個數組??然后針對這個數組寫幾個加減乘除的函數

------解決思路----------------------

四行代碼算1000階乘精確值

------解決思路----------------------

用數組,自己寫計算函數

總結

以上是生活随笔為你收集整理的c语言中数组大小10000,C语言,怎么存一个很大的数,比方说10000的阶乘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。