#include<stdio.h>
double fact(int n); /*函式宣告*/
int main(void)
{
int i;
double sum;
sum=0;
for(i=1;i<=100;i++)
sum=sum+fact(i); /*呼叫fact(i)求i!,共重復100次*/
printf("1!+2!+…+100!=%d\n",sum); /*用指數形式輸出結果*/
return 0;
}
/*定義求n!的函式*/
double fact(int n)
{
int i;
double result; /*變數result中存放階層的值*/
result =1; /*置階層result的初值為1*/
for(i=1;i<=n;i++)/*回圈執行n次,計算n!*/
result=result*i;
return result; /*把結果回送主函式*/
}
uj5u.com熱心網友回復:
僅供參考:100!#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
inline int COMPARE(string str1,string str2) {//相等回傳0,大于回傳1,小于回傳-1
if (str1.size()>str2.size()) return 1; //長度長的整數大于長度小的整數
else if (str1.size()<str2.size()) return -1;
else return str1.compare(str2); //若長度相等,則頭到尾按位比較
}
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 < length1 && i < length2; i++) {
char c = (char)(number1[i] + number2[i] - 48);
result = result + c;
}
while(i < length1) {
result = result + number1[i];
++i;
}
while(i < length2) {
result = result + number2[i];
++i;
}
int carry = 0;
for(i = 0; i < (int)result.size(); ++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 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 < length1; i++) {
for(j = 0; j < length2; j++) {
iresult[i+j] += ((number1[i] - 48) * (number2[j] - 48));
}
}
int carry = 0;
for(i = 0; i < length1 + length2; 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 << factorial("100") << endl;
return 0;
}
//93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
//
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241602.html
標籤:工具平臺和程序庫
上一篇:Visual Studio Installer無法下載安裝檔案
下一篇:修改單片機程式