PAT甲级字符串相关题目题解(C/C++)

本文是PAT甲级字符串相关题目的C++题解,涵盖PAT1001、1005、1006等多道题目。涉及C++用法、for - each遍历、字符ASCII码、数据长度估算、字符串字典序比较等知识点,还介绍了unordered_set方法区别及字符串元素删除等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


PAT甲级字符串相关题目题解

PAT1001(知识点:C++中to_string()的用法)

#include <iostream>
using namespace std;

int main()
{
   
   
    int x, y;
    cin >> x >> y;
    string sum_str = to_string(x + y);
    string res = "";
    for (int i = sum_str.size() - 1, j = 0; i >= 0; i--) // j用来存储当前已经遍历了几位
    {
   
   
        res = sum_str[i] + res;
        j++;
        if (j % 3 == 0 && i != 0 && sum_str[i - 1] != '-')
        {
   
   
            res = ',' + res;
        }
    }
    cout << res;
}

PAT1005(知识点:for-each遍历、字符ASCII码、数据长度估算)

知识点:for-each遍历、字符ASCII码、数据长度估算

  1. c - '0’可以得到字符对应的int值,如果直接输出c,输出的是这个数字字符的ASCII码值,易错点。

  2. 题目输入范围是 1 0 100 10^{100} 10100,而int的大小通常是32位,范围是 − 2 31 -2^{31} 231 2 31 − 1 2^{31}-1 2311,这里要估算一下 1 0 100 10^{100} 10100有没有超过int的范围,最后决定使用string存储输入值,而不是int(因为会越界)

python代码计算:

import math

# 计算2的31次方
power_of_two = 2 ** 31

# 转换为10的次方
power_of_ten = math.log10(power_of_two)

power_of_ten

要证明 (2^{31}) 约等于 (10^{9.33}) 的推理正确性,我们可以使用对数的换底公式来进行计算。换底公式是:

log ⁡ b a = log ⁡ c a log ⁡ c b \log_b a = \frac{\log_c a}{\log_c b} logba=logcblogca

其中,(a) 和 (b) 是大于0的实数,(c) 是正实数且 (c \neq 1)。我们想要计算的是 (2^{31}) 用 (10) 的次方来表示,即求 (10) 的多少次方等于 (2^{31})。

根据对数的定义,我们可以将 (2^{31}) 表示为 (10) 的对数:

1 0 x = 2 31 10^x = 2^{31} 10x=231

取对数得:

x = log ⁡ 10 ( 2 31 ) x = \log_{10} (2^{31}) x=log10(231)

使用换底公式,将底数从 (10) 改为 (2)(因为 (2) 和 (10) 的对数我们更容易理解和计算):

x = log ⁡ 2 ( 2 31 ) log ⁡ 2 ( 10 ) x = \frac{\log_2 (2^{31})}{\log_2 (10)} x=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值