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

2024-04-13 12:18

本文主要是介绍英雄会第四届在线编程大赛·线上初赛:带通配符的数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

输入格式

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

输出格式

每行一个整数表示结果。

答题说明

输入样例

36?1?8

236428

8?3

910

?

5

输出样例

100

0

4

 

#include <stdio.h>
#include<iostream>
#include <string>
#define NUM 100
using namespace std;
int before(int i,int index)    ;
int index(int i);
int dataResult();
int One(int i);
int dataOutput();
int dataInput();
int checkData(int i);
int checkLength(int i);


char data[NUM][11];
int num;
int result[NUM];

int main(int argc,char*argv[])
{
    printf("请输入要输入数据对的个数");
    scanf("%d",&num);
    num*=2;
    //printf("%d\n",num);
    dataInput();
    dataOutput();
    dataResult();
    return 0;
}
int checkData(int i)
{
    if(0 == i%2)
    {
        for(int j=0;j<strlen(data[i]);j++)
        {
            if (data[i][j]!='?'&&!(data[i][j]>='0'&&data[i][j]<='9'))
            {
                printf("输入的数据只能包括?和数字,此次输入不符合规则,请再次输入\n");
                return i-1;
            }
        }
    }
    else
    {
        for(int j=0;j<strlen(data[i]);j++)
        {
            if (!(data[i][j]>='0'&&data[i][j]<='9'))
            {
                printf("此次输入只能包括数字,输入不符合规则,请再次输入\n");
                return i-1;
            }
        }

    }
    return i;
}
int checkLength(int i)
{
    if(0 == strlen(data[i]))
    {
        printf("此次未输入的数据,请再次输入。\n");
        return i-1;
    }
    if(strlen(data[i])>10)
    {
        printf("此次输入的数大于10位,请再次输入:\n");
        strcpy(data[i],"");
        return i-1;
    }
    if(0 != i%2)
    {
        if(strlen(data[i-1])!=strlen(data[i]))
        {
            strcpy(data[i],"");
            strcpy(data[i-1],"");
            printf("和前一次输入的数据长度不一致,请再输如两组数据。\n");
            return i-2;
        }
    }
    return i;
}

int dataInput()
{
    printf("请输入数据,以回车结束\n");
    for(int i=0;i<num;i++)
    {
        fflush(stdin);
        gets(data[i]);
        i = checkLength(i);
        i = checkData(i);
//        printf("strlen(data[i])=%d\n",strlen(data[i]));
    }
    return 1;
};
int dataOutput()
{
    puts("/t*************输入的数据***********************");
    for(int i=0;i<num;i++)
    {
        puts(data[i]);
    }
    puts("/t*************输入的数据***********************");
    return 1;
};

int One(int i)
{
    int k = 0,sum=0;
        for(int j=0;j<strlen(data[i]);j++)
        {
            if ('?'==data[i][j])
            {
                k++;   
                sum=sum*10+(data[i+1][j]-'0');               
            }
        }
        if(before(i,index(i))>before(i+1,index(i)))
        {
                return  (int)pow(10.0,k);
        }
        else if(before(i,index(i))==before(i+1,index(i)))
        {
                return   (int)pow(10.0,k)-1-sum;
        }
        else
        {
            return 0;
        }

}
int dataResult()
{
    int sum = 0;
    for(int i=0;i<num;i+=2)
    {
        if(0 == i%2)
        {
            result[i/2] = One(i);
        }
        printf("%d\n",result[i/2]);
    }
    return 1;
};
int index(int i)
{
    for(int j=0;j<strlen(data[i]);j++)
    {
        if ('?'==data[i][j])
        {
            return j;
        }
    }
    return      strlen(data[i]);
}
int before(int i,int index)
{
    int sum =0;
    for(int j=0;j<index;j++)
    {
        sum+=(int)pow((float)(data[i][j]-'0'),index-1-j);
    }
    return sum;
}

 

 

这篇关于英雄会第四届在线编程大赛·线上初赛:带通配符的数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900117

相关文章

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言