您的位置:首页 > 编程语言

英雄会第四届在线编程大赛·线上初赛:带通配符的数

2014-03-17 02:19 267 查看
给定一个带通配符问号的数W,问号可以代表任意一个一位数字。

再给定一个整数X,和W具有同样的长度。

问有多少个整数符合W的形式并且比X大?

输入格式

多组数据,每组数据两行,第一行是W,第二行是X,它们长度相同。在[1..10]之间.

输出格式

每行一个整数表示结果。

答题说明
输入样例

36?1?8

236428

8?3

910

?

5

输出样例

100

0

4

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

static char TPF='?';

double NumberCount(char val[100],char pattern[100]);

int main()
{
char val[100]={'\0'};
char pattern[100]={'\0'};
double num=0;
while(scanf("%s\n%s",pattern,val)!=EOF)
{

num=NumberCount(val,pattern);
printf("%.0lf\n",num);
}
return 0;
}

double NumberCount(char val[100],char pattern[100])
{
int pn=0;
double num=0;
int i=0;
int j=0;
char cp,cn;
for (i=0;i<strlen(pattern);i++)
{
if(pattern[i]==TPF) pn++;
}
for(j=0;j<strlen(pattern);j++)
{
cp=pattern[j];
cn=val[j];
if(cp==TPF)
{
pn--;
num+=pow(10.0,pn)*('9'-cn);
}
else if(cp<cn) return num;
else if(cp>cn) return num+pow(10.0,pn);
}

return num;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐