本来java里面会有大数类比较容易实现这些大数的运算,但是用c语言就要用到一些转化了,一下附上源代码
#include <stdio.h>
#include <string.h>
int main()
{
char a[50], b[50];
scanf("%s %s", a, b);
int n1 = strlen(a), n2 = strlen(b);
int sum[100] = {0};
int d = 0, n, k;
for(int i = 0, p = n1 - 1; i < n1; ++i, --p)
{
for(int j = 0, q = n2 - 1; j < n2; ++j, --q)
{
k = i + j;
int c = sum[k] + (a[p] - 48) * (b[q] - 48) + d;
sum[k] = c % 10;
d = c / 10;
}
while(d > 0)
{
++k;
sum[k] = sum[k] + d % 10;
d /= 10;
}
n = k;
}
for(int i = n; i >= 0; --i)
{
printf("%d", sum[i]);
}
printf("\n");
return 0;
}
#include<stdio.h>
#include<string.h>
int a[1000001];
int main()
{
int n;
while (~scanf("%d",&n))
{
int len=1;
a[0]=1;//定义a[0]=1;
for(int i=2;i<=n;i++)
{
int b=0;
for(int j=1;j<=len;++j)
{
int t=a[j-1]*i+b; //注意是a[j-1]
a[j-1]=t%10;
b=t/10;
/*if(j==len&&b!=0)
len++; */
}
while (b)
{
len++;
a[len-1]=b%10;
b/=10;
}
}
for(i=len;i>0;--i)
printf("%d",a[i-1]);
printf("\n");
}
return 0;
}