hdu 1261 排列组合&&大数除法
发布时间:2020-12-13 20:47:38 所属栏目:PHP教程 来源:网络整理
导读:唉 不知道第1次发甚么神经 第1次把t定义成char 型的了 小数还对 大数就不多了、、、找了半个小时才找到 以后要仔细了 求大数 1定是用字符串保存,,long long 肯定溢出。 具体思路就是把所有字符个数加起来的阶乘n!除以各个字符出现的个数的阶乘。 #include
唉 不知道第1次发甚么神经 第1次把t定义成char 型的了 小数还对 大数就不多了、、、找了半个小时才找到 以后要仔细了 求大数 1定是用字符串保存,,long long 肯定溢出。 具体思路就是把所有字符个数加起来的阶乘n!除以各个字符出现的个数的阶乘。 #include <stdio.h>
#include <string.h>
#define num 1000
int main()
{
char str[num];
long long n,x,count,j,i,q,sum,a[30],t,k;
while(scanf("%lld",&n)!=EOF&&n)
{
memset(str,sizeof(str));
str[0]=1;
count=0;
for(i=0;i<n;i++)
{
scanf("%lld",&x);
sum=1;
for(j=2;j<=x;j++)//计算各个字符的个数阶乘
sum=sum*j;
a[i]=sum;
count+=x;//求字符总个数。
}
for(i=2;i<=count;i++)//大数阶乘。count
{
for(q=0,t=0;q<num;q++)
{
k=str[q]*i+t;
str[q]=k%10;
t=k/10;
}
}
for(i=num⑴;i>=0;i--)
if(str[i]!=0)
break;
for(q=0;q<n;q++)
{
sum=0;
for(j=i;j>=0;j--)//大数除以小数,字符串摹拟除法进程。大胆的除吧 肯定能整除。
{
t=(sum*10+str[j])/a[q];
sum=(sum*10+str[j])%a[q];
str[j]=t;
}
}
for(i=num⑴;i>=0;i--)
if(str[i]!=0)
break;
for(q=i;q>=0;q--)
printf("%d",str[q]);
printf("
");
}
return 0;
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- php – 我怎么能抓住这个错误? (POST Content-Length ……
- 我怎样才能在PHP中获取a p标签的alt属性?
- linux中phpMyAdmin错误提示Wrong permissions on configura
- php – PDO和MySQLi是否在抽象层下使用MySQL函数?
- 详解WordPress中创建和添加过滤器的相关PHP函数
- php – 如何在Joomla中使用memcached
- CodeIgniter基于Email类发邮件的方法
- 如何在PHP中将对象的副本推送到数组中
- [pinyin4j] java版汉字转换拼音(大小写)
- 《PHP编程最快明白》第四讲:日期、表单接收、session、coo