带通配符的数

来源:互联网 发布:网络帅哥图片 编辑:程序博客网 时间:2024/05/18 04:54

给定一个带通配符问号的数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;}/*?????1000023?8?123458223?821234812*/


0 0
原创粉丝点击