给定一个带通配符问号的数W,问号可以代表任意一个一位数字。
再给定一个整数X,和W具有同样的长度。
问有多少个整数符合W的形式并且比X大?
输入格式
多组数据,每组数据两行,第一行是W,第二行是X,它们长度相同。在[1..10]之间.
输出格式
每行一个整数表示结果。
答题说明:
输入样例
36?1?8
236428
8?3
910
?
5
输出样例
100
0
4
思路就是自编一个strcmp()函数
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
char w[110],x[110];
while(scanf("%s%s",w,x)!=EOF)
{
int i,j;
long long ans=0,p;
for(i=0;i<strlen(w);i++)
{
if(w[i]=='?'){
p='9'-x[i];
for(j=i+1;j<strlen(w);j++)if(w[j]=='?')p*=10;
ans+=p;
}
else if(w[i]>x[i])
{
p=1;
for(j=i+1;j<strlen(w);j++)if(w[j]=='?')p*=10;
ans+=p;
/*Pay attention:
后面没有问号也要加1
一开始是写成 if(p!=1)ans+=p;
结果第25个案例错了
*/
break;
//既然w[i]>x[i],再比较没有意义
}
else if(w[i]<x[i])break;
}
printf("%lld\n",ans);
}
return 0;
}
/*
?????
10000
23?8?1
234582
23?821
234812
*/