3920: 张老师的加法进位
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:0
解决:0
题目描述
张老师最近在复习竖式加法,这是大家从小最早学习运算时学的计算方法
```
1 2 3
+ 4 5 6
--------
5 7 9
```
而有时候计算过程中会碰到进位运算,比如 $101 + 909$ 需要进位 $2$ 次
```
1 0 1
+ 9 0 9
----------
1 0 1 0
```
甚至 $1 + 999$ 可能出现连续进位,一共进位 $3$ 次
```
1
+ 9 9 9
----------
1 0 0 0
```
现在张老师突发奇想,他写下了 $n$ 个整数分别为 $a_i$,他想知道,执行以下代码,运算结果会是多少?
```cpp
int calc(int x, int y){
return (x + y 过程中的进位次数)
}
for (int i = 1; i <= n; ++i){
for (int j = i + 1; j <= n; ++j){
ans += calc(a[i], a[j])
}
}
cout << ans << endl;
```
```
1 2 3
+ 4 5 6
--------
5 7 9
```
而有时候计算过程中会碰到进位运算,比如 $101 + 909$ 需要进位 $2$ 次
```
1 0 1
+ 9 0 9
----------
1 0 1 0
```
甚至 $1 + 999$ 可能出现连续进位,一共进位 $3$ 次
```
1
+ 9 9 9
----------
1 0 0 0
```
现在张老师突发奇想,他写下了 $n$ 个整数分别为 $a_i$,他想知道,执行以下代码,运算结果会是多少?
```cpp
int calc(int x, int y){
return (x + y 过程中的进位次数)
}
for (int i = 1; i <= n; ++i){
for (int j = i + 1; j <= n; ++j){
ans += calc(a[i], a[j])
}
}
cout << ans << endl;
```
输入
输入第一行包含一个整数 $n$ 表示数字个数
输入第二行包含 $n$ 个整数 $a_1, a_2 \dots a_n$,用空格隔开
对于 $10\%$ 的数据满足 $n \leq 100$,$0 \le a_i \le 9$。
对于另外 $20\%$ 的数据满足$n \leq 1000$,$0 \le a_i \le 10^9$。
对于另外 $30\%$ 的数据,$n \leq 100000$,$0 \le a_i \le 1000$。
对于 $100\%$ 的数据,$1 \leq n \leq 100000, 0 \leq a_i \leq 10^9$。
输入第二行包含 $n$ 个整数 $a_1, a_2 \dots a_n$,用空格隔开
对于另外 $20\%$ 的数据满足$n \leq 1000$,$0 \le a_i \le 10^9$。
对于另外 $30\%$ 的数据,$n \leq 100000$,$0 \le a_i \le 1000$。
对于 $100\%$ 的数据,$1 \leq n \leq 100000, 0 \leq a_i \leq 10^9$。
输出
输出一行包含一个整数,表示上述代码运行的结果
样例输入 复制
3
1 9 99
样例输出 复制
5
提示
### 样例解释1
$1 + 9$ 进位了 $1$ 次
$1 + 99$ 进位了 $2$ 次
$9 + 99$ 进位了 $2$ 次
所以一共进位了 $5$ 次
$1 + 9$ 进位了 $1$ 次
$1 + 99$ 进位了 $2$ 次
$9 + 99$ 进位了 $2$ 次
所以一共进位了 $5$ 次