- 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
输入格式:
- 输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。
输出格式:
输入样例:
3 2 8 5
结尾无空行
输出样例:
330
结尾无空行
new 思路:
- 采用类计算器的原理,先计算出个位数的值,再计算出十位数的值,
根据各位数所需的次数,更新个位数和十位数的值,
最后,相加即可。
AC:
#include <bits/stdc++.h>
using namespace std;
int main()
{
std::ios_base::sync_with_stdio(false);
int n;
cin >> n;
int *a = new int[n];
long int sd = 0, td = 0;
for (int i = 1; i <= n;i++)
{
cin >> a[i];
sd += a[i];
td = td + (a[i] * 10);
}
td = td * (n - 1);
sd = sd * (n - 1);
int res = td + sd;
cout << res << endl;
free(a);
return 0;
}