P8615 [蓝桥杯 2014 国 C] 拼接平方数--substr、to_string、stoi

P8615 蓝桥杯 2014 国 C 拼接平方数--substr、to_string、stoi

题目

解析

首先先将数据范围内的平方数标记,【因为题目中说道"首先它是个平方数"】

然后,巧妙的来了,睁大眼睛瞧好了!运用to_string()将整数i转换为字符,这就有人要问了,为什么要转换呢?不转换行不行呀?当然可以,但是我这个肯定更巧妙,你学不学嘛!

转换为string类型为了好拆数据【用substr】,自带的函数用着不香吗,拆完再转回int【用stoi】接着判断平方就好了,如果都被标记了,那就输出结束循环。

介绍一下这三个函数:

1、to_string():

顾名思义,作用是方便将数字以文本形式处理,例如拼接分割输出

2、stoi():

【这个与to_string相反】全称是 string to integer(字符串转整数)

注意:

1)字符串必须表示有效数字,(例如:"12a3",stoi 会抛出异常)

2)前导零问题:有前导零(比如 "009"),stoi 会直接转换成 9(忽略前导零)。

3、substr():

作用是从一个字符串中截取一部分字符,生成一个新的子字符串。

常用的2种方式:

1)substr(起始位置):截取从起始位置开始到字符串末尾的所有字符。即[i,-1]

2)substr(起始位置, 截取长度):从 起始位置 开始,截取指定长度的字符。即[i,j)左闭右开的

代码

cpp 复制代码
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <math.h>
#include <queue>

#include <cctype>
using namespace std;
int a, b;
int f[1000010];
int main() {
	cin >> a >> b;
	for (int i = 1; i <= 1000; i++)
		f[i * i] = 1;
	for (int i = a; i <= b; i++) {
		if (f[i]) {
			string s = to_string(i);
			for (int j = 1; j < s.size(); j++) {
				string s1 = s.substr(0, j);
				string s2 = s.substr(j);
				if (f[stoi(s1)] && f[stoi(s2)]) {
					cout << i << endl;
					break;
				}

			}
		}
	}
	return 0;
}
相关推荐
Chester_19994 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
裕晟资质规划5 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
会周易的程序员5 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
小灰灰搞电子6 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化6 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
是隼人6 小时前
buuctf-pwn xdctf2015_pwn200题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
en.en..6 小时前
C语言 标准输入 / 输出缓冲区
算法
吃好睡好便好8 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学习星球8 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
小灰灰搞电子9 小时前
C++ 引用折叠详解
c++