蜗蜗国最近在造一个超级大的城堡,要用到一块超级大的砖头,已知这块砖头的长宽高分别为 a,b,c
, 请你帮忙计算一下这块砖头的体积(长方体的体积等于长 ×
宽 ×
高)。但是聪明过人的你千万要注意,蜗蜗国是使用八进制的,a,b,c
也都是八进制下的数字,最后你给出的答案也需要是一个八进制数。
第一行输入一个很大的正整数 a
。
第二行输入一个很大的正整数 b
。
第三行输入一个很大的正整数 c
。
注意,a,b,c
都是八进制数。
输出 a×b×c
的结果,这也是一个八进制数。
输入格式
共三行。
第一行,一个很大的正整数 a
。
第二行,一个很大的正整数 b
。
第三行,一个很大的正整数 c
。
输出格式
仅一行,一个正整数。
样例输入
12345
123
455753
样例输出
777313460325
数据范围
记 A1
为 a
的位数,B2
为 b
的位数,C3
为 c
的位数。
对于 100%
的数据,保证 1≤A1,B2,C3≤100,a≠0,b≠0,c≠0
。
自己写的,不知道哪里错了
#include<bits/stdc++.h>
using namespace std;
int a[110],b[110],c[110],d[500],e[500];
char s[110];
int la,lb,lc,ld,le;
void change(char s[],int a[],int &la){
la=strlen(s+1);
for(int i=1;i<=la;i++){
a[i]=a[la-i+1]-'0';
}
}
int main(){
scanf("%s",s+1);
change(s,a,la);
scanf("%s",s+1);
change(s,b,lb);
scanf("%s",s+1);
change(s,c,lc);
ld=la+lb;
for(int i=1;i<=la;i++){
for(int j=1;j<=lb;j++){
d[i+j-1]+=a[i]*b[j];
}
}
for(int i=1;i<=ld;i++){
d[i+1]+=d[i]/8,d[i]%=8;
}
if(!d[ld]){
ld--;
}
le=ld+lc;
for(int i=1;i<=lc;i++){
for(int j=1;j<=ld;j++){
e[i+j-1]+=c[i]*d[j];
}
}
for(int i=1;i<=le;i++){
e[i+1]+=e[i]/8,e[i]%=8;
}
if(!e[le]){
le--;
}
for(int i=le;i>=1;i--){
cout<<e[i];
}
}