hdu 1261(指数型母函数+精度计算)
题意:易理解...
分析:由指数型母函数只是知道总共有:(n1+n2+...+n(m))!/(n1!*n2!...*n(m)!),但是这个是大数的运算,所以就转换成了精度计算,这个不难。
代码实现:
#include<stdio.h> #include<string.h> int a[1000],len; void jiecheng(int n)//用来算n!是大数,所以用数组保存,每个数组元素保存4位 { int i,j,carry,temp; a[0]=1;len=1; for(i=2;i<=n;i++) { carry=0; for(j=0;j<len;j++) { temp=a[j]*i+carry; a[j]=temp%10000; carry=temp/10000; } if(carry)//是否进位 a[len++]=carry; } } int main() { int n,i,j,k; int num[26],sum,temp; int carry; while(scanf("%d",&n)!=EOF&&n) { sum=0; for(i=0;i<n;i++) { scanf("%d",&num[i]); sum+=num[i]; } jiecheng(sum); for(i=0;i<n;i++)//这是一个大数除以小数的算法 { for(j=2;j<=num[i];j++) { carry=0; for(k=len-1;k>=0;k--) { temp=a[k]+carry*10000; a[k]=temp/j; carry=temp%j; } while(a[len-1]==0) len--; } } printf("%d",a[len-1]); for(i=len-2;i>=0;i--) printf("%04d",a[i]); printf("\n"); } return 0; }
posted on 2013-04-18 08:59 后端bug开发工程师 阅读(427) 评论(0) 编辑 收藏 举报