#include<cstdio>
#include<cstring>
typedef unsigned long long ull;
using namespace std;
ull f[16];
int n,num[16];
int main()
{
f[0]=f[1]=1;
for(int i=2;i<=12;i++)
f[i]=f[i-1]*i;
while(~scanf("%d",&n)&&n)
{
memset(num,0,sizeof(num));
for(int i=1;i<=n;i++)
{
int a;
scanf("%d",&a);
num[a]++;
}
ull res=0;
for(int i=0;i<10;i++)
if(num[i])
{
ull t=1;
for(int j=0;j<10;j++)
if(j==i)
t*=f[num[j]-1];
else
t*=f[num[j]];
res+=i*f[n-1]/t;
}
ull ans=0;
for(int i=0;i<n;i++)
ans=ans*10+res;
printf("%lld\n",ans);
}
}uva 11076 给n个数字 n个数字的所有排列出来的数 相加 求和
最新推荐文章于 2019-05-10 00:13:27 发布
本文介绍了一个使用C++实现的组合数学问题解决方案,通过预计算阶乘并利用这些阶乘值来高效地计算特定排列数。该算法适用于解决涉及数字排列的问题,特别是当输入为整数序列且需要计算不同排列的可能性时。


206

被折叠的 条评论
为什么被折叠?



