题目描述
小强写了一个十进制数X ,但有些字迹已经模糊不清(我们以 ? 代替),现在给定另一个相同位数的十进制数Y ,他想知道有多少种可能使得X>Y
。
输入格式
第一行为正整数t(t≤100) ,表示数据组数;每组数据中,第一行为一个16位以内的十进制数X ,当中有若干个 ?;
第二行为一个相同位数的十进制数Y。
输出格式
输出X>Y 的可能数。
贴上代码:
#include <bits/stdc++.h>
using namespace std;
string q[101], a[101];
int main() {
long long n, ans = 0;
bool ihq = 0;
cin >> n;
for (int i = 1; i <= n; i++) cin >> q[i] >> a[i];
for (int i = 1; i <= n; i++) {
ans = 0;
int qs = 0;
for (int j = 0; j < q[i].length(); j++)
if (q[i][j] == '?')
qs++;
for (int j = 0; j < q[i].length(); j++) {
if (q[i][j] == '?')
ans += ('9' - a[i][j]) * pow(10, qs - 1), qs--;
else if (q[i][j] < a[i][j])
break;
else if ( q[i][j] > a[i][j] ){
ans += pow(10, qs);
break;
}
}
cout << ans << endl;
}
}