hdu 1261 (大数除法)
2013-04-26 15:24
351 查看
点击打开链接
分析:
ans = sum!/(a1!*a2!*……);
#include"stdio.h"
#include"string.h"
int main()
{
int n;
int sum;
int a[30];
int t,len;
int i,j,k;
int carry;
int num[155];
while(scanf("%d",&n)!=-1,n)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
memset(num,0,sizeof(num));
num[0]=1;
len=1;
for(i=2;i<=sum;i++)
{
carry=0;
for(j=0;j<len;j++)
{
num[j]*=i;
num[j]+=carry;
if(num[j]>=100000)
{
carry=num[j]/100000;
num[j]%=100000;
}
else carry=0;
}
if(carry!=0)num[len]=carry;
while(num[len]!=0)len++;
}
for(i=0;i<n;i++)
{
for(j=2;j<=a[i];j++)
{
t=0;
carry=0;
for(k=len-1;k>=0;k--)
{
carry=t;
t=(num[k]+t*100000)%j;
num[k]=(num[k]+carry*100000)/j;
}
while(num[len-1]==0)len--;
}
}
for(i=len;i>=0;i--)
if(num[i]!=0)
{
printf("%d",num[i]);break;
}
for(i--;i>=0;i--)
{
printf("%05d",num[i]);
}
printf("\n");
}
return 0;
}
分析:
ans = sum!/(a1!*a2!*……);
#include"stdio.h"
#include"string.h"
int main()
{
int n;
int sum;
int a[30];
int t,len;
int i,j,k;
int carry;
int num[155];
while(scanf("%d",&n)!=-1,n)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
memset(num,0,sizeof(num));
num[0]=1;
len=1;
for(i=2;i<=sum;i++)
{
carry=0;
for(j=0;j<len;j++)
{
num[j]*=i;
num[j]+=carry;
if(num[j]>=100000)
{
carry=num[j]/100000;
num[j]%=100000;
}
else carry=0;
}
if(carry!=0)num[len]=carry;
while(num[len]!=0)len++;
}
for(i=0;i<n;i++)
{
for(j=2;j<=a[i];j++)
{
t=0;
carry=0;
for(k=len-1;k>=0;k--)
{
carry=t;
t=(num[k]+t*100000)%j;
num[k]=(num[k]+carry*100000)/j;
}
while(num[len-1]==0)len--;
}
}
for(i=len;i>=0;i--)
if(num[i]!=0)
{
printf("%d",num[i]);break;
}
for(i--;i>=0;i--)
{
printf("%05d",num[i]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- HDU 1261 字串数(大数阶乘 除法 组合 java)
- 组合数学 + 大数乘法 + 大数除法 之 hdu 1261 字串数
- hdu 1261 排列组合&&大数除法
- HDU 1134 卡特兰数 大数乘法除法
- hdu-1134-Game of Connections(卡特兰数 大数乘法除法)
- HDU 1261(全排列,大数乘除)
- HDU 4577 X-Boxes (数学+大数除法)
- HDU 1134 卡特兰数 大数乘法除法
- HDU 1134 卡特兰数 大数乘法除法
- HDU1134——Game of Connections (大数乘法,除法)+ (卡特兰数列)
- HDU 1023 大数与int小数 乘法 除法!!!!!!!!!!!!!
- 字串数_hdu_1261(大数极致).java
- HDU Buy the Ticket(大数除法乘法要注意)
- 字串数_hdu_1261(大数极致).java
- hdu 1261(组合数+java大数)
- HDU 5429 【大数除法模拟】
- hdu 1130 How Many Trees?(卡特兰数,大数的乘法与除法)
- HDU 1023 Train Problem II 卡特兰数 大数的乘法除法
- 划分树学习小记 Poj 2104+Poj 2761+Hdu 2665 (区间第k大数)
- hdu 4927 Series 1 (大数模板加减乘除)