PAT甲级刷题:模拟(不断更新)

2023-11-17

目录

1001 A+B Format

1005 Spell It Right

1035 Password

1061 Dating(18/20)

1073 Scientific Notation(16/20)

 1077 Kuchiguse(17/20)


传送门:PTA | 程序设计类实验辅助教学平台

1001 A+B Format

注意每三位数字出现一个逗号是从尾端开始向前计数。

#include<bits/stdc++.h>
using namespace std;

void getSum(int a, int b) {
    string str = to_string(a + b);
    for (int i = 0; i < str.size(); i++) {
        cout<<str[i];
        if (str[i] == '-') continue;
        if (i != str.size() - 1 && (i + 1) % 3 == str.size() % 3) cout<<",";
    }
    return ;
}

int main() {
    int a, b;
    cin>>a>>b;
    getSum(a, b);
    return 0;
}


1005 Spell It Right

注意题目的输入和输出都是字符串

#include<bits/stdc++.h>
using namespace std;

vector<string> vec({"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"});

void getSum(string n) {
    int sum = 0;
    for (int i = 0; i < n.size(); i++) sum += (n[i] - '0');
    string str = to_string(sum);
    for (int i = 0; i < str.size(); ++i) {
        cout<<vec[str[i] - '0'];
        if (i != str.size() - 1) cout<<" ";
    }
}

int main() {
    string num;
    cin>>num;
    getSum(num);
    return 0;
}

1035 Password

注意从测试用例找到突破口,这道题每行包括两个字符串,每一个都要cin

#include<bits/stdc++.h>
using namespace std;

vector<string> ans;

// 若发生修改则存储字符串
void checkString(string xuhao, string n) {
    bool flag = false;
    for (int i = 0; i < n.size(); ++i) {
        if (n[i] == '1') {n[i] = '@'; flag = true;}
        else if (n[i] == '0') {n[i] = '%'; flag = true;}
        else if (n[i] == 'l') {n[i] = 'L'; flag = true;}
        else if (n[i] == 'O') {n[i] = 'o'; flag = true;}
        else continue;
    }
    if (flag) ans.push_back(xuhao + " " + n);
}

int main() {
    int N;
    string str, xuhao;    // 这里一共输入了两个字符串,注意从测试用例中找到突破口
    cin>>N;
    for (int i = 0; i < N; ++i) {
        cin>>xuhao>>str;
        checkString(xuhao, str);
    }
    if (ans.size() == 0) {
        if (N == 1) cout<<"There is 1 account and no account is modified"<<endl;
        else cout<<"There are "<<N<<" accounts and no account is modified"<<endl;
    }
    else {
        cout<<ans.size()<<endl;
        for (auto it : ans) cout<<it<<endl;
    }
    return 0;
}

1061 Dating(18/20)

没完全跑通。。差两分,今天搞不动了,回头再说

#include<bits/stdc++.h>
using namespace std;

vector<int> tranTime(string str1, string str2, string str3, string str4) {
    vector<int> res;
    bool flag = false;
    int n1 = min(str1.size(), str2.size()), n2 = min(str3.size(), str4.size());

    for (int i = 0; i < n1; ++i) {
        // cout<<flag<<endl;
        // 记录周几
        if (flag == false && str1[i] >= 'A' && str1[i] <= 'G' && str1[i] == str2[i]) {
            res.emplace_back(str1[i] - 'A');
            flag = true;    // 开始判断小时
            continue;
        }

        // 记录小时
        if (flag &&  ((str2[i] >= 'A' && str2[i] <= 'N') || (str1[i] >= '0' && str1[i] <= '9')) && str1[i] == str2[i]) {
            if (str2[i] >= 'A' && str2[i] <= 'N') res.emplace_back(str2[i] - 'A' + 10);
            else res.emplace_back(str2[i] - '0');
        }
    }

    for (int i = 0; i < n2; ++i) {
        // 记录分钟
        if (str3[i] == str4[i] && isalpha(str3[i])) {
            res.emplace_back(i);
            break;  // Assuming that there's only one matching minute character
        }
    }
    return res;
}


vector<string> date({"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"});

int main() {
    string str1, str2, str3, str4;
    cin>>str1>>str2>>str3>>str4;
    vector<int> nums = tranTime(str1, str2, str3, str4);
    // 打印日期
    cout<<date[nums[0]]<<" ";
    printf("%02d:%02d", nums[1], nums[2]);
    return 0;
}

1073 Scientific Notation(16/20)

没完全跑通

#include<bits/stdc++.h>
using namespace std;

int main() {
    string s;
    cin>>s;
    if (s[0] == '-') cout<<"-";
    int len = s.size();
    // 截取E之后的三位ss
    string ss = s.substr(len - 3);
    string sss = ss.substr(1);
    // weishu代表小数点要移动的位数
    int weishu = stoi(sss);
    // 截取E之前的不包括正负号的部分
    string str = s.substr(1, len - 5);

    // 小数点向后移动
    if (ss[0] == '+') {
        // 该情况下不用输出小数点
        if (weishu >= str.size() - 2) {
            for (char c : str) {
                if (c == '.') continue;
                cout<<c;
            }
            for (int i = 0; i < weishu - str.size() + 2; ++i) cout<<"0";
        }
        // 该情况下还是要输出小数点
        else {
            for (int i = 0; i < weishu + 2; ++i) {
                if (str[i] == '.') continue;
                cout<<str[i];
            }
            cout<<".";
            for (int i = weishu + 2; i < str.size(); ++i) cout<<str[i];
        }
    }
    else {
        cout<<"0.";
        for (int i = 1; i < weishu; ++i) cout<<"0";
        for (char c : str) {
            if (c == '.') continue;
            cout<<c;
        }
    }
    return 0;
}

 1077 Kuchiguse(17/20)

学会了输入一整行带有空格字符串的办法get.cin() + getline(cin, str)

#include<bits/stdc++.h>
using namespace std;

void getCom(string &s1, string &s2) {
    int len = min(s1.size(), s2.size());
    int i;
    for (i = 0; i < len; i++) {
        if (s1[i] != s2[i]) break;
    }
    s1 = s1.substr(0, i);
    return ;
}

int main() {
    int n;
    // cin>>n;
    scanf("%d\n", &n);
    string s, str;
    // 输入一整行带空格字符串的方法
    // cin.get();
    getline(cin, s);
    
    reverse(s.begin(), s.end());
    n--;
    while (n--) {
        cin.get();
        getline(cin, str);
        reverse(str.begin(), str.end());
        getCom(s, str);
    }
    if (s == "") cout<<"nai"<<endl;
    else {
        reverse(s.begin(), s.end());
        cout<<s<<endl;
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PAT甲级刷题:模拟(不断更新) 的相关文章

随机推荐

  • CVE-2016-5159 脏牛内核提权

    Linux内核提权 脏牛提权漏洞 Linux内核的子系统在处理写入时复制至产生了竞争条件 恶意用户可以利用此漏洞来获得高权限 对只读内存映射进行访问 并且在提权的时候 杀毒软件并不会检测到 影响范围 Linux内核 gt 2 6 22 20
  • 利用外部程序对存储BIOS设置参数的CMOS RAM进行读取操作的可行性分析

    电脑的启动过程如下 机后主动执行BIOS程序 可以通过BIOS去设置CMOS 也可以不设置 然后BOIS会去识别操作系统引导设备的引导分区 一般也就是电脑里的硬盘中的第一个扇区 这个扇区中有分区表和主引导分区MBR 我们找到了MBR MBR
  • 【AcWing30】正则表达式匹配(动态规划)

    dp i j 表示 s 0 i 的字符串与p 0 j 的字符串是否匹配 那么有以下几个转换状态 1 p j 1 是字母 而且与 s i 1 相等 那么当前dp i j 是否匹配就依赖于dp i 1 j 1 2 p j 1 是 那么肯定与s
  • GoogleTest安装和搭建自动测试环境

    一 GoogleTest安装 1 下载GoogleTest源代码 sudo apt get install libgtest dev 2 编译源代码 1 安装完源代码后 继续在终端中输入 cd usr src gtest切换到源码存放的地方
  • 高斯分布的极大似然估计

    本文是关于 coursera 上 Robotics Estimation and Learning 课程的笔记 前面通过一个例子简单地介绍了极大似然估计的意思 现在来对高斯分布做极大似然估计 一维高斯分布 概率密度函数 一维高斯分布 Gau
  • dialog弹窗表单居中

    内容居中只需要设置样式就可以了 不用太复杂了 el dialog body display inline block
  • Java操作json的通用类

    package com baiyyy polabs util json import java text ParseException import java util ArrayList import java util Date imp
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 云服务器+云数据库+WordPress搭建网站

    本文已在个人网站上发表 地址 http www bookmonster club 一 硬件环境 1 本地主机 window10系统 2 腾讯云服务器 Windows Server 2016 数据中心版 64位中文版 3 腾讯云数据库 Cyn
  • 知识越分享,收获越多。

    好处一 分享能更快地提升自己 分享知识对人是有考验的 因为做分享 首先要在脑袋里回顾 总结这个知识点 然后通过语言或文字表达出来 这个过程考验了对知识的掌握程度 可以增强我们的思考能力 语言表达能力和文字表达能力 很多时候 我们以为自己知道
  • ./configure: error: C compiler cc is not found

    CentOS 执行 configure 编译命令 时出现 checking for C compiler not found 解决方法 执行以下命令 yum y install gcc gcc c autoconf automake mak
  • dva中model中effect中获取state中的数据

    model export default modelExtend pageModel namespace storeIf state id effects update payload call put select const data
  • 如何快速确定程序的入口

    前言 在阅读代码时 知道程序的入口十分重要 这有助于快速理清程序的逻辑框架 我们找到程序入口后 顺着代码的执行顺序来阅读代码 可以比较容易的理解代码 这里说的代码是编译后成为可执行程序的代码 在linux中就是elf格式 被编译成可执行程序
  • 【学习笔记】模糊控制算法

    本文目录 0 前言 1 概述 2 模糊集合 2 1 集合和论域 2 2 模糊集合的概念 2 3 模糊集合的表示方式 2 4 模糊集合的运算 3 模糊关系与模糊关系合成 3 1 笛卡尔积 3 2 关系与模糊关系 3 3 模糊关系的运算 3 4
  • 自动生成代码的配置generator.properties

    u4EE3 u7801 u751F u6210 u5668 uFF0C u914D u7F6E u4FE1 u606F u5305 u540D package com zscat cms u4F5C u8005 author zscat E
  • python使用scipy.optimize的fsolve求解线性(非线性)方程

    文章目录 求解线性方程 求解非线性方程 求解线性方程 对于固定的线性方程 a 2b 0 4a 5b 0 求 a 与 b 使用如下方法 import scipy optimize as opt import numpy as np def f
  • 【JDK版本常见报错及其解决,Java基础知识点百度云

    J2SE 8 52 J2SE 7 jdk1 7 51 J2SE 6 0 jdk1 6 50 J2SE 5 0 jdk1 5 49 JDK 1 4 48 JDK 1 3 47 JDK 1 2 46 JDK 1 1 45 那怎么办 好办 把项目
  • 【链表】环型链表找环的起点

    力扣 142 环型链表 II 题目 给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 1 先确定链表存在环 使用快慢指针法 分别定义 fast 和 slow 指针 从头结点出发 fast 指针每次
  • FFmpeg中的常见结构体

    代码基于FFmpeg5 0 1 目录 FFFormatContext AVFormatContext AVIOContext FFIOContext URLContext URLProtocol AVInputFormat FFStream
  • PAT甲级刷题:模拟(不断更新)

    目录 1001 A B Format 1005 Spell It Right 1035 Password 1061 Dating 18 20 1073 Scientific Notation 16 20 1077 Kuchiguse 17