2022年3月6日22:43:57
文章目录
- 2022年3月6日22:43:57
- 1101 B是A的多少倍 (15 分)
-
- 1.【题目描述】
- 2.【题解】
- 3.【补充知识】
-
- 1. substr ;
- 2.字符串转数字&&数字转字符串;
-
- 函数实现
- 使用流实现
1101 B是A的多少倍 (15 分) 1.【题目描述】 题目链接
设一个数A A A 的最低D D D 位形成的数是a d a_d ad? 。如果把a d a_d ad? 截下来移到A A A 的最高位前面,就形成了一个新的数B B B。 B B B 是A A A 的多少倍?
例如将 12345 的最低 2 位 45 截下来放到 123 的前面,就得到 45123,它约是 12345 的 3.66 倍。
输入格式:
输入在一行中给出一个正整数A A A( ≤ 1 0 9 ≤10^9 ≤109)和要截取的位数D D D。题目保证D D D 不超过A A A 的总位数。
输出格式:
计算B B B 是A A A 的多少倍,输出小数点后 2 位。
2.【题解】
- 利用字符串根据题意进行截断和拼接;
- 截断:用
substr()
进行截断初始字符串的某部分; - 拼接:利用
string
用+
拼接字符串; - 字符串转数字进行运算。
void solve(){
string s,s1,s2;
cin >> s;
int n;
cin >> n;
s1 = s.substr(s.size() - n , n);
s2 = s.substr(0, s.size() - n);
s1 += s2;
int m = stoi(s1);
int k = stoi(s);
double b = m * 1.0 / k;
printf("%.2lf\n", b);
}
3.【补充知识】 1. substr ;
s.substr(pos, len);
返回值:
string
,包含s中从 pos
开始的 len
个字符的拷贝(
pos
的默认值是 0
,len
的默认值是 s.size() - pos
,即不加参数会默认拷贝整个 s
)异常 :若
pos
的值超过了string
的大小,则substr
函数会抛出一个out_of_range
异常;若pos+n
的值超过了string
的大小,则substr
会调整n
的值,只拷贝到string
的末尾2.字符串转数字&&数字转字符串;
函数实现 一、
stoi()
将字符串转换为 int
型二、
stoll()
将字符串转换为long long
型三、
stof()
将字符串转换为float
型四、
stod()
将字符串转换为double
型五、
to_string()
将数字转换为string
型使用流实现 数字类型转为string字符串
#include
using namespace std;
int main(){
int n = 123;
stringstream ss;
string str;
ss << n;
ss >> str;
cout << str;
return 0;
}
【PTA|【PTA乙级】【1101 B是A的多少倍 (15 分)】】string字符串转为数字类型
#include
using namespace std;
int main(){
string str = "123";
stringstream ss;
int num;
ss << str;
ss >> num;
cout << num;
return 0;
}
推荐阅读
- PTA|【PTA乙级】【1096 大美数 (15 分)】
- PTA|【PTA乙级】【1106 2019数列 (15 分)】
- 算法竞赛|【算法入门到进阶】【学习目录】
- 2021-5-1 【PTA】【L1-6 不变初心数 (15 分)】
- 读书笔记之智能指针广度搜索
- 计算机组成原理|数的机器码表示【原码、反码、补码】笔记
- 6CCS3VER
- #|C语言每日一练——第140天(抓交通肇事犯)
- C++|c++中string的模拟实现