当前位置 : 主页 > 编程语言 > java >

Problem 20 Factorial digit sum (阶乘数和)

来源:互联网 收集:自由互联 发布时间:2022-08-15
Problem 20 n! meansn× (n− 1) × ... × 3 × 2 × 1 For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27. Find the sum of the digits in the number 100! A


 


Problem 20

n! means n × (n − 1) × ... × 3 × 2 × 1

For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

Find the sum of the digits in the number 100!

Answer:

648

Completed on Thu, 27 Oct 2016, 14:17


题解:高精度阶乘。

代码:


#include<bits/stdc++.h>
using namespace std;
const int MAXN=40000;//如果是10000的阶乘,改为40000就够了
int f[MAXN];
int main() //HDU 1042
{
int i,j,n;
int ans=0;
while(scanf("%d",&n)!=EOF)
{
memset(f,0,sizeof(f));
f[0]=1;
for(i=2;i<=n;i++)
{
int c=0;
for(j=0;j<MAXN;j++)
{
int s=f[j]*i+c;
f[j]=s%10;
c=s/10;
}
}
for(j=MAXN-1;j>=0;j--)
if(f[j]) break;//忽略前导0
for(i=j;i>=0;i--) {
printf("%d",f[i]);
ans+=f[i];
}
printf("\n");
cout<<ans<<endl;
}
return 0;
}




上一篇:HDU 3555 Bomb (数位dp)
下一篇:没有了
网友评论