UVa:11076 Add Again
2014-01-19 17:15
218 查看
第三百个题。
这个题比较好想。对于所有组合得到的整数来说,它们某个确定位上的数字就是给定的这些数字。
对于每个数字统计它出现的次数,然后算当这个数位于最后一位的时候,有多少种情况。这里用到了一个排列组合去掉重复元素的公式,也很简单。
算出所有数的所有情况以后再求和,这样再算n位就行了。
这个题比较好想。对于所有组合得到的整数来说,它们某个确定位上的数字就是给定的这些数字。
对于每个数字统计它出现的次数,然后算当这个数位于最后一位的时候,有多少种情况。这里用到了一个排列组合去掉重复元素的公式,也很简单。
算出所有数的所有情况以后再求和,这样再算n位就行了。
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define MAXN 100005 #define MOD 1000000007 #define INF 2139062143 #define ll unsigned long long using namespace std; int fac[15]; int main() { fac[0]=1; for(int i=1; i<=12; ++i) fac[i]=fac[i-1]*i; int N; while(scanf("%d",&N)&&N) { int num[12]= {0}; for(int i=0; i<N; ++i) { int t; scanf("%d",&t); num[t]++; } int val[12]= {0}; for(int i=0; i<=9; ++i) if(num[i]) { num[i]--; int res=fac[N-1]; for(int j=0; j<=9; ++j) res=res/fac[num[j]]; val[i]=res; num[i]++; } ll sum=0; for(int i=0; i<=9; ++i) sum+=i*val[i]; ll ans=0; for(int i=0; i<N; ++i) { ans=ans+sum; sum=sum*10; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- UVa 572
- UVa 11524 - In-Circle
- UVa 686 - Goldbach's Conjecture (II)
- uva 1372 - Log Jumping(贪心)
- uva1606 Amphiphilic Carbon Molecules
- Uva---11729Commando War(贪心)
- uva 11582 Colossal Fibonacci Numbers!
- 例题5.16 Halum操作 UVa11478
- UVa100 The 3n + 1 problem
- 树形DP(Hali-Bula的晚会,uva 1220)
- UVa 1585 Score / 1586 Molar Mass(遍历+计数)
- UVA 12661 Funny Car Racing
- uva 141 The Spot Game
- poj 1013(uva 608) Counterfeit Dollar
- uva 10229 - Modular Fibonacci(矩阵快速幂)
- uva 11624
- UVA - 11768 Lattice Point or Not (拓展gcd)
- uva 1572
- UVa_136Ugly_Number
- UVA Poker Hands题解