B1016 部分A+B (15分)

B1016 部分A+B (15分)

输入格式:

输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中

\(0<A,B<10^10\)。

输出格式:

在一行中输出 PA+PB的值。

输入样例 1:

3862767 6 13530293 3

输出样例 1:

399

输入样例 2:

3862767 1 13530293 8

思路

关键是首先处理出,只含有DA的字符串。

然后将该字符串转化为整数相加。

使用c++的特性

c++11 数值类型和字符串的相互转换 - 农民伯伯-Coding - 博客园 https://www.cnblogs.com/gtarcoder/p/4925592.html

to_string()可以数字转为字符串

/*字符串(string)转为数字*/
std::string str = "1000";
int val = std::stoi(str);
long val = std::stol(str);
float val = std::stof(str);
/*字符串(char*)转为数字*/
atoi: 将字符串转换为 int
atol: 将字符串转换为long
atoll:将字符串转换为 long long
atof: 将字符串转换为浮点数

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(void){
    string a,b;
    char da, db;
    int m,i=0;
    cin >> a >> da >> b >> db;
    while(i<a.length()) {
        if(a[i] != da){
            a.erase(a.begin() + i);
            i--;
        }
        i++;
    }
    //cout <<a<<endl;/*取得对应字符串成功*/
    i=0;
    while(i<b.length()) {
        if(b[i] != db){
            b.erase(b.begin() + i);
            i--;
        }
        i++;
    }
    //cout <<b<<endl;/*取得对应字符串成功*/

    if(a!="" && b!=""){/* stol 函数对空字符串报错*/
        m =stol(a) + stol(b);
    }
    else{
        if(a==""&& b!=""){
            m=stol(b);
        }
        else if(a=="" && b==""){
            m=0;
        }
        else
            m=stol(a);
    }
    printf("%d",m);
    return 0;
}

原文地址:https://www.cnblogs.com/lingr7/p/10300721.html

时间: 2024-10-09 04:59:48

B1016 部分A+B (15分)的相关文章

pta 数据结构 习题2.4 递增的整数序列链表的插入(15 分)

习题2.4 递增的整数序列链表的插入(15 分) 本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性. 函数接口定义: List Insert( List L, ElementType X ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; type

PAT-JAVA-5-2 然后是几点 (15分)

5-2 然后是几点   (15分) 有时候人们用四位数字表示一个时间,比如1106表示11点零6分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字.当小时为个位数时,没有前导的零,即5点30分表示为530.注意,第二个数字表示的分钟数可能超过60,也可能是负数. 输入格式: 输入在一行中给出2个整数,分别是四位数字表示的起始时间.以及流逝的分钟数,其间以

1001 害死人不偿命的(3n+1)猜想 (15)(15 分)

1001 害死人不偿命的(3n+1)猜想 (15)(15 分) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展-- 我们今天的题目不是证明卡

1006 换个格式输出整数 (15)(15 分)

1006 换个格式输出整数 (15)(15 分) 让我们用字母B来表示"百".字母S表示"十",用"12...n"来表示个位数字n(&lt10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个"百".3个"十".以及个位的4. 输入格式:每个测试输入包含1个测试用例,给出正整数n(&lt1000). 输出格式:每个测试用例的输出占一行,用规定的

习题2.5 两个有序链表序列的合并(15 分)&lt;有疑问?L1 L2 没办法变空&gt;

习题2.5 两个有序链表序列的合并(15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode L

7-36 复数四则运算(15 分)

7-36 7-36 复数四则运算(15 分) 本题要求编写程序,计算2个复数的和.差.积.商. 输入格式: 输入在一行中按照a1 b1 a2 b2的格式给出2个复数C1=a1+b1i和C2=a2+b2i的实部和虚部.题目保证C2不为0. 输出格式: 分别在4行中按照(a1+b1i) 运算符 (a2+b2i) = 结果的格式顺序输出2个复数的和.差.积.商,数字精确到小数点后1位.如果结果的实部或者虚部为0,则不输出.如果结果为0,则输出0.0. 输入样例1: 2 3.08 -2.04 5.06

[PAT B1036]跟奥巴马一起编程(15分)

1036 跟奥巴马一起编程(15)(15 分) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算机科学教育周"正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形.现在你也跟他一起画吧! 输入格式:输入在一行中给出正方形边长N(3<=N<=20)和组成正方形边的某种字符C,间隔一个空格. 输出格式:输出由给定字符C画出的正方形.但是注意到行间距比列间距大,所以为了让结果看上去更像正方形

6-2 递归计算Ackermenn函数 (15 分)

6-2 递归计算Ackermenn函数 (15 分) 本题要求实现Ackermenn函数的计算,其函数定义如下: 函数接口定义: int Ack( int m, int n ); 其中m和n是用户传入的非负整数.函数Ack返回Ackermenn函数的相应值.题目保证输入输出都在长整型 范围内. 裁判测试程序样例: #include <stdio.h> int Ack( int m, int n ); int main() { int m, n; scanf("%d %d",

PAT 乙级 1091 N-自守数 (15 分)

1091 N-自守数 (15 分) 如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为"N-自守数".例如 3×92?2??=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守数. 本题就请你编写程序判断一个给定的数字是否关于某个 N 是 N-自守数. 输入格式: 输入在第一行中给出正整数 M(≤20),随后一行给出 M 个待检测的.不超过 1000 的正整数. 输出格式: 对每个需要检测的数字,如果它是 N-自守数就在一行中