题目链接:uva 11076 - Add Again
解题思路:给出一个序列,要求将所有可能的序列每个序列形成的数值相加的和。
解题思路:对每个位置进行考虑,计算每种数字在这个位置出现的次数,其他位置按照组合数学去计算次数。然后有n个位置,每个位置的情况是一样的。
#include <stdio.h>
#include <string.h>
const int N = 105;
typedef unsigned long long ll;
int n;
ll C[N][N], cnt[N];
void init () {
C[0][0] = 1;
for (int i = 1; i <= 12; i++) {
for (int j = 0; j <= i; j++)
C[i][j] = C[i-1][j] + C[i-1][j-1];
}
}
ll count () {
int k = n - 1;
ll t = 1;
for (int i = 0; i < 10; i++) {
t *= C[k][cnt[i]];
k -= cnt[i];
}
return t;
}
ll solve () {
ll tmp = 0;
for (ll i = 0; i < 10; i++) {
if (cnt[i]) {
cnt[i]--;
ll t = count();
cnt[i]++;
tmp += i * t;
}
}
ll ans = 0;
for (int i = 0; i < n; i++)
ans = ans * 10 + tmp;
return ans;
}
int main () {
init ();
while (scanf("%d", &n), n) {
memset(cnt, 0, sizeof(cnt));
int a;
for (int i = 0; i < n; i++) {
scanf("%d", &a);
cnt[a]++;
}
printf("%lld\n", solve ());
}
return 0;
}
分享到:
相关推荐
判断输入字符串是否为镜像或回文串。 来源于UVaOJ - 401. 水题。
开源项目-codingsince1985-UVa#uva-online-judge-solutions-in-golang.zip,两年来每天都在解决一个uva在线裁判问题,算起来…
uva705 Slash Maze 的代码,在UVaOJ上通过
PDF试题
uva532 Dungeon Master的源代码,并且AC了
Algorithm-UVA-Solutions-in-Python.zip,python 3中各种uva(acm)问题的解决方案。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
这是UVA133 TheDoleQueue救济金发放问题,经典的算法问题。初学算法的人要对这种算法非常熟悉并且能熟练运用。
tpcw-nyu-uva-client 客户端
leetcode 2 算法-Java UVa Online Judge(ACM-ICPC Live ...使用:数组、哈希表、链表、二分搜索、动态规划、堆栈、堆、reedy、排序、树 DFS、BFS、图、二分搜索树、递归、记忆、队列、映射等。...Uva-ACM-ICPC