这题又臭又长(你是一个一个...哼哼哼....大题啊啊啊臭题!!
思路是:使用的是c++,用了c++的string,方便了不少,比如先将得到的各位的数字存在string变量中,遇到+,将当前存的字符串转为数字( stoi() stoll())赋值给另一个long long变量,并将string变量清空,再次读入B的各位数字。
最好定义一个转化函数。
这题麻烦的地方就在于图形转化为数字
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
//const int N=100005;
//ll a[N],b[N];
ll turn(string arr[],int len);
string arr[6];
int main(){
ll sum=0;
for (int i=1;i<=5;i++){
cin>>arr[i];
}
int len=arr[1].length();
sum=turn (arr,len);
cout<<sum;
}
ll turn(string arr[],int len){
ll sum=0;
string s;
for (int i=0;i<7*((len+2)/7);i+=7){
if (arr[1][i]=='.'&&arr[5][i]=='.'){
if (arr[3][i+2]=='*'){
sum=stoll(s);
s="";
}else{
s+="1";
}
}else if (arr[5][i]=='.'&&arr[5][i+4]=='.'){
s+="7";
}else if (arr[2][i]=='.'&&arr[4][i+4]=='.'){
s+="2";
}else if (arr[2][i+4]=='.'&&arr[4][i]=='*'){
s+="6";
}else if (arr[2][i+4]=='.'&&arr[4][i]=='.'){
s+="5";
}else{
if (arr[3][i+2]=='.'){
s+="0";
}else if (arr[1][i+1]=='.'){
s+="4";
}else if (arr[2][i]=='.'){
s+="3";
}else if (arr[4][i]=='.'){
s+="9";
}else{
s+="8";
}
}
}
return sum+stoll(s);
}