小J无意间翻到了自己上小学时候的数学作业,上面有着他在学习加法时候的回忆。
799
+ 239
-------
1038
然而,作业由于长时间存放在地下室,加法算式中的某一个数字已经斑驳泛黄,有的是“加数”中缺失了,有的是“和”中缺失了,令小J无法识别。现在小J想请你帮忙,将缺失的数字识别出来。
输入
三行字符串,表示加法运算中的两个“加数”以及它们的“和”,其中缺失的数字用大写字符X代替。其中任意一个字符串的长度L满足1=<L<1000。
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define ll long long
#define mem(ar,num) memset(ar,num,sizeof(ar))
#define me(ar) memset(ar,0,sizeof(ar))
#define lowbit(x) (x&(-x))
#define IOS ios::sync_with_stdio(false)
#define DEBUG cout<<endl<<"DEBUG"<<endl;
#define mod 19260817
#define N 100005
#define MP make_pair
#define PI pair<int,int>
using namespace std;
int calc(string a) {
int jsa = 0;
for(int i = 0; i < a.size(); i++) {
jsa = (jsa * 10) % mod;
jsa = (jsa + a[i] - '0') % mod;
}
return jsa;
}
int main() {
string a[3];
cin >> a[0] >> a[1] >> a[2];
int flagx, flagy;
for(int i = 0; i < 3; i++)
for(int j = 0; j < a[i].size(); j++) {
if(a[i][j] == 'X') {
flagx = i;
flagy = j;
}
}
for(int i = 0; i <= 9; i++) {
a[flagx][flagy] = '0' + i;
if((calc(a[0]) + calc(a[1])) % mod == calc(a[2]))
return 0 * printf("%d\n", i);
}
return 0;
}