uva 11076 給n個數字 n個數字的所有排列出來的數 相加 求和
阿新 • • 發佈:2019-02-11
#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); } }