您的位置:首页 > 其它

高精度阶乘

2016-10-06 19:56 141 查看
。。。其实就是高精度乘法的翻版,洛谷水题,不解释了。。。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
struct T{
int x[20000],len;
T(int z=0){
memset(x,0,sizeof(x));
if(z==1){x[0]=1;len=1;}
}
};
T operator *(T a,int b){
T res;
res.len=a.len;
for(int i=0;i<a.len;i++){
res.x[i]+=a.x[i]*b;
res.x[i+1]+=res.x[i]/10;
res.x[i]%=10;
}
while(res.x[res.len]){
res.x[res.len+1]+=res.x[res.len]/10;
res.x[res.len]%=10;
++res.len;
}
return res;
}
int main(){
int i,j,k,m,n;
int t;
scanf("%d",&t);
while(t--){
T sum=1;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
sum=sum*i;
}
int ans=0;
for(i=sum.len-1;i>=0;i--){
if(sum.x[i]==m)ans++;
//printf("%d",sum.x[i]);
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: