首页 > 其他分享 >20240328每日一题题解

20240328每日一题题解

时间:2024-03-28 17:57:34浏览次数:19  
标签:string 题解 每日 long 62 20240328 字符串 模型 整型

20240328每日一题题解

摘要

本文对于2024年3月28日的每日一题进行了问题重述,并将问题拆解为五个步骤,分别进行了详细的讨论与求解,实现了整型与字符串类型的互相转换。并且还指出,在编写C++程序时,需要观察数据范围,在有必要时使用长整型long long)存储数据,以免出现整型溢出现象。

关键词:长整型;字符串;相互转换;整型溢出;


目录

  1. 问题重述

  2. 问题分析

  3. 模型的建立与求解

    Step1~Step5

  4. 模型的分析与检验

    1. 模型的分析
    2. 模型的检验
  5. 模型的评价与推广

    1. 模型的评价
    2. 模型的推广

问题重述

判断给出的整数x,是否出现过数字 \(62\) 或者能够被 \(62\)​ 整除。

如果是,输出 Yes,否则输出 No

保证 \(1 \leq x \leq 10 ^ {18}\)。

问题分析

可以将问题拆解为以下个部分:

  1. 选择合适的类型读入整数x
  2. 判断x能否被 \(62\) 整除;
  3. 判断x中是否出现过数字 \(62\) ;
  4. 按照步骤 3 和步骤 4 ,得到答案
  5. 输出答案

\(Step1\)

注意到题目中提到 \(1 \leq x \leq 10 ^ {18}\)。我们应选择long long(长整型)这种数据类型存放x,确保变量不会出现溢出。

\(Step2\)

为了判断整型x能否被 \(62\) 整除,可以使用取余(取模)运算。运算符为%(\(\bmod\))。

\(Step3\)

本题的一大难点在于如何将身为long long类型的变量x转化为字符串类型,而后判断其中是否存在子串"62"。为此,我们既可以手动实现(利用除法和取模运算,依次提取出x的每一位并存放到字符串当中,再进行判断),也可以使用C++11中提供给我们的to_string()函数。在这里,手动提取算法不过多赘述,我们使用更加简洁方面的to_string()函数。

to_string()函数的参数接受一个整型,并返回一个string类型字符串。

比如,如果执行:

int x;
cin>>x;
string str;
str=to_string(x);

就会把输入的整型x存放到字符串str当中。

接下来我们使用string.find()函数来查找字符串中是否存在"62"string.find()函数的功能是在字符串中查找是否存在指定的字符串,如果存在,则返回找到的地方(下标);如果不存在则返回一个常量string::npos。这个常量通常是-1,但是在不同编译器下有所不同。故,欲判断字符串中是否存在某个字串,只需判断函数string.find("子串")是否等于string::npos这个值即可。

比如,如果执行:

string str;
cin>>str;
if(str.find("abc")==string::npos)
{
	cout<<"存在abc"<<endl;
}

可以判断用户输入的字符串是否存在子串"abc"

\(Step4\)

综合\(Step3\)和\(Step4\),我们将得到两个表达式,分别能够判断整型变量中是否出现过数字 \(62\) ,是否能够被 \(62\) 整除。

注意到题目中使用的逻辑词为,这代表两个逻辑表达式的关系应该是or的关系。

\(Step5\)

经过\(Step3\sim Step5\)的计算,如果最后的两者之True,则输出Yes;否则输出No

模型的建立与求解

#include<iostream>
using namespace std;
int main()
{
	long long x;
	cin>>x;
	if(x%62==0 || to_string(x).find("62")!=string::npos)
	{
		cout<<"Yes"<<endl;
	}
	else
	{
		cout<<"No"<<endl;
	}
	return 0;
}

模型的分析与检验

模型的分析

手动测试了几组样例,均符合理想情况,说明我们编写的代码在大部分情况下是正确的。

模型的检验

我们将代码提交至在线评测平台,发现可以通过所有样例点(见下图1)。可以证明我们的代码具有极高的正确性。

模型的评价与推广

模型的评价

优点:

  1. 很好的解决了跨数据类型的问题,实现了整型到字符串类型的转换。
  2. 代码简明,操作简单,效率高。
  3. 可以用于解决其他的数学问题,可修改模型中的变量与判断条件,具有可推广性。

缺点:

  1. 仅支持将整型转化为字符串,不了解是否支持将浮点型或者负数转化为字符串。
  2. 仅支持单向转化,未解决如何将字符串转化为整型等数字类型。
  3. 如果数据范围更大,例如\(\ge10^{18}\),无法推广至更大的数字。

模型的推广

  1. 使用手动编写的to_string()函数,支持更多数据类型到字符串的转换。
  2. 编写更多函数,使字符串也可以转化成整型等数字类型。
  3. 手写高精度,实现在更大的数据范围下,模型依然能够很好的工作。

标签:string,题解,每日,long,62,20240328,字符串,模型,整型
From: https://www.cnblogs.com/Vanilla-chan/p/18102260

相关文章

  • Spring Boot 工程开发常见问题解决方案,日常开发全覆盖
    本文是SpringBoot开发的干货集中营,涵盖了日常开发中遇到的诸多问题,通篇着重讲解如何快速解决问题,部分重点问题会讲解原理,以及为什么要这样做。便于大家快速处理实践中经常遇到的小问题,既方便自己也方便他人,老鸟和新手皆适合,值得收藏......
  • (58/60)每日温度、下一个更大元素Ⅰ
    每日温度leetcode:739.每日温度单调栈思路单调栈,存放元素下标。遍历一遍,每个元素和栈顶元素比较:<=栈顶元素,入栈>栈顶元素,result[st.top()]=i-st.top();弹出继续,直到遍历结束或<=栈顶元素代码实现classSolution{public:/*单调栈,存放元素下标遍历一遍,每个......
  • P2421-荒岛野人Savage题解
    好久没写题解了啊洛谷P2421荒岛野人题目大意:有一个有很多洞的岛上,住了\(n\)个野人,每个野人的初始位置为\(c[i]\),换洞的速度为\(p[i]\),寿命为\(l[i]\)。要求求出洞的最少个数\(M\)满足每个野人在生存状态下不会在同一年和其他野人住在同一个山洞里。概括版:很多个青蛙的约会。......
  • 【题解】AGC007E | 二分答案 复杂度分析
    首先考虑题目要求每条边被经过两次,这说明了我们进入一个子树后一定会处理完子树内所有的叶子后离开该子树,否则子树上端那条边会进出至少两次,即经过至少四次。所以这说明了子树之间的独立性:某个子树在答案中一定是一个连续的区间,这引导我们从有根树信息自下向上拼接的角度考虑。我......
  • SP2426 PLD - Palindromes 题解
    题目传送门题目大意给定一个字符串,请你求出这个字符串中所有长度为kkk的回文串的个数。解题思路我们只需要枚举每个字串的起始位置......
  • [USACO24FEB] Bessla Motors G 题解
    题目大意对于每个充电站找它所能去到的非充电站的点TTT($C<T$同时两点的距离在RR......
  • 每日一题 第三十五期 洛谷 过河卒
    [NOIP2002普及组]过河卒题目描述棋盘上AAA点有一个过河卒,需要走到目标BB......
  • 暖心推荐:三螺杆泵 IMO中国ACE038L3NVBP 2024已更新(每日/实时)
    暖心推荐:三螺杆泵IMO中国ACE038L3NVBP2024已更新(每日/实时)暖心推荐:三螺杆泵IMO中国ACE038L3NVBP2024已更新(每日/实时)暖心推荐:三螺杆泵IMO中国ACE038L3NVBP2024已更新(每日/实时)ACG052N7NVBP进口三螺杆泵组瑞典IMO泵IMO双螺杆泵IMO三螺杆泵瑞典IMO工业公司,......
  • 力扣由浅至深 每日一题.16 ​ 合并两个有序数组​
    日复一日的生活里也会有新的快乐                 ——24.3.27合并两个有序数组给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2......
  • 2006 年考研英语真题 - 翻译题解析
    2006 年考研英语真题 - 翻译题解析IsittruethattheAmericanintellectualisrejectedandconsideredofnoaccountinhissociety?[1] 翻译:难道美国的知识分子被嫌弃,在社会中不受重视吗?1.it 是形式主语,代指后面的 that 从句。2.Americanintellectual 美......