之”、“乎”、“者”、“也”是四个古人常用的语气助词。蜗蜗最近迷上了古文和算数,他敏锐地发现,古人说话总是用到这些字,然后他就把一书架的文言文都拿出来数了一遍,发现“之”有 a个,“乎”有b个,“者”有c个,“也”有d个。他想统计一下这些“之乎者也”一共有多少个笔画,但因为数量级实在是太大,他算不出来,你能帮帮他吗?已知“之”“乎”“者”“也”分别有 33 画、 55 画、 88 画和 33 画。
输入格式
一共四行,每行一个正整数,依次为 a,b,c,d。
输出格式
一行, 一个正整数,表示总共的笔画。
样例输入1
51289340328432234322098421
128932487832936372898444
9999993843929349999994932949239
85764958671273673254673236362730031
样例输出1
257374876119085137988481053382571488
解答:
#include <bits/stdc++.h>
using namespace std;
int a[105];
int b[105];
int c[105];
int d[105];
int total[105];
char s[105];
int len_1;
int len_2;
int len_3;
int len_4;
int maxlen;
int maxlen_1;
int maxlen_2;
int main () {
scanf("%s", s + 1);
len_1 = strlen(s + 1);
for (int i = 1; i <= len_1; i++) {
a[i] = s[len_1 + 1 - i] - 48;
}
for (int i = 1; i <= len_1; i++) {
a[i] *= 3;
}
for (int i = 1; i <= len_1; i++) {
a[i + 1] += a[i] / 10;
a[i] %= 10;
}
while (a[len_1 + 1] > 0) {
len_1++;
a[len_1 + 1] += a[len_1] / 10;
a[len_1] %= 10;
}
if (a[len_1 + 1] > 0) {
len_1++;
}
while (a[len_1] == 0 && len_1 > 1)
len_1--;
scanf("%s", s + 1);
len_2 = strlen(s + 1);
for (int i = 1; i <= len_2; i++) {
b[i] = s[len_2 + 1 - i] - 48;
}
for (int i = 1; i <= len_2; i++) {
b[i] *= 5;
}
for (int i = 1; i <= len_2; i++) {
b[i + 1] += b[i] / 10;
b[i] %= 10;
}
while (b[len_2 + 1] > 0) {
len_2++;
b[len_2 + 1] += b[len_2] / 10;
b[len_2] %= 10;
}
if (b[len_2 + 1] > 0) {
len_2++;
}
while (b[len_2] == 0 && len_2 > 1)
len_2--;
scanf("%s", s + 1);
len_3 = strlen(s + 1);
for (int i = 1; i <= len_3; i++) {
c[i] = s[len_3 + 1 - i] - 48;
}
for (int i = 1; i <= len_3; i++) {
c[i] *= 8;
}
for (int i = 1; i <= len_3; i++) {
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
while (c[len_3 + 1] > 0) {
len_3++;
c[len_3 + 1] += c[len_3] / 10;
c[len_3] %= 10;
}
if (c[len_3 + 1] > 0) {
len_3++;
}
while (c[len_3] == 0 && len_3 > 1)
len_3--;
scanf("%s", s + 1);
len_4 = strlen(s + 1);
for (int i = 1; i <= len_4; i++) {
d[i] = s[len_4 + 1 - i] - 48;
}
for (int i = 1; i <= len_4; i++) {
d[i] *= 3;
}
for (int i = 1; i <= len_4; i++) {
d[i + 1] += d[i] / 10;
d[i] %= 10;
}
while (d[len_4 + 1] > 0) {
len_4++;
d[len_4 + 1] += d[len_4] / 10;
d[len_4] %= 10;
}
if (d[len_4 + 1] > 0) {
len_4++;
}
while (d[len_4] == 0 && len_4 > 1)
len_4--;
maxlen_1 = max(len_1, len_2);
maxlen_2 = max(len_3, len_4);
maxlen = max(maxlen_1, maxlen_2);
for (int i = 1; i <= maxlen; i++) {
total[i] += a[i];
total[i] += b[i];
total[i] += c[i];
total[i] += d[i];
}
for (int i = 1; i <= maxlen; i++) {
total[i + 1] += total[i] / 10;
total[i] %= 10;
}
while (total[maxlen + 1] > 0) {
maxlen++;
total[maxlen + 1] += total[maxlen] / 10;
total[maxlen] %= 10;
}
for (int i = maxlen; i >= 1; i--) {
cout << total[i];
}
return 0;
}