2026年6月GESP真题及题解(C++二级):完全平方数计数

发布时间:2026/7/2 7:00:29
2026年6月GESP真题及题解(C++二级):完全平方数计数 2026年6月GESP真题及题解C二级完全平方数计数题目描述小杨同学正在研究完全平方数。平方一个数的平方等于这个数乘以这个数本身。完全平方数指可以恰好表示为某个正整数的平方的数。例如9 99是完全平方数因为9 3 2 3 × 3 9 3^2 3 \times 39323×3但27 2727不是因为27 2727不能表示为任何正整数的平方。给定两个正整数l ll和r rr保证l ≤ r l \le rl≤r小杨同学想知道l ll到r rr之间的所有正整数中包含l ll和r rr有多少个数是完全平方数。输入格式输入两行第一行为一个正整数l ll第二行为一个正整数r rr。输出格式输出一个非负整数表示l ll到r rr中有多少个正整数是完全平方数。如果l ll到r rr中没有完全平方数则输出0 00。输入输出样例 1输入 11 21输出 14说明/提示样例解释 1在1 11到21 2121中有以下4 44个整数是完全平方数1 , 4 , 9 , 16 1, 4, 9, 161,4,9,16。数据范围1 ≤ l ≤ r ≤ 2000 1 \le l \le r \le 20001≤l≤r≤2000。思路分析方法1完全平方数即某个正整数k的平方k²。给定区间[l, r]我们需要统计满足l ≤ k² ≤ r的整数k的个数。由于r ≤ 2000k的最大值不超过 ⌊2000 \sqrt{2000}2000​⌋ 44因为 44² 1936 ≤ 200045² 2025 2000。因此我们可以枚举k从 1 开始计算k²只要k² ≤ r就继续。对于每个平方数判断它是否 ≥l若是则计数器加一。代码实现方法1#includebits/stdc.husingnamespacestd;intmain(){intl,r;//定义左右边界cinlr;//输入l和rintans0;//答案计数器for(inti1;i*ir;i){//枚举正整数i直到i²rif(i*il)ans;//若平方数在区间内则计数}coutans;//输出结果return0;}功能分析方法1输入处理从标准输入读取两个正整数l和r保证l ≤ r。枚举平方数循环变量i从 1 开始每次检查i*i是否超过r若超过则停止。由于i递增平方数也递增因此不会遗漏。区间判定对每个平方数i*i只需判断其是否 ≥l因为循环条件已保证它 ≤r所以满足条件的平方数一定在区间内。输出结果输出计数器ans该值即为区间内完全平方数的个数。若不存在则ans保持 0输出 0。思路分析方法2本题要求统计区间[l, r]内完全平方数的个数。完全平方数是指能表示为某个正整数平方的数。最直观的做法是枚举区间内的每一个整数i然后判断它是否为完全平方数。判断方法计算i的平方根并向下取整得到y若y * y i则i是完全平方数。因为r ≤ 2000枚举最多 2000 次每次判断为常数时间完全可行。代码实现方法2#includebits/stdc.husingnamespacestd;intl,r,cnt0;//左右边界和计数器//check函数判断x是否为完全平方数boolcheck(intx){intysqrt(x);//取平方根整数部分returny*yx;//判断平方是否等于原数}intmain(){cinlr;//读入区间for(intil;ir;i){//枚举每个整数if(check(i))cnt;//计数完全平方数}coutcnt;return0;}功能分析方法2输入处理从标准输入读取两个正整数l和r保证l ≤ r。核心逻辑自定义函数check(x)利用sqrt和误差修正判断x是否为完全平方数。主函数中循环遍历[l, r]内的所有整数调用check并累计满足条件的个数。输出打印计数器cnt即为区间内完全平方数的数量。若无则输出0。各种学习资料助力大家一站式学习和提升#includebits/stdc.husingnamespacestd;intmain(){cout########## 一站式掌握信奥赛知识! ##########;cout############# 冲刺信奥赛拿奖! #############;cout###### 课程购买后永久学习不受限制! ######;return0;}【秘籍汇总】完整csp信奥赛C学习资料1、csp/信奥赛C完整信奥赛系列课程永久学习https://edu.csdn.net/lecturer/7901 点击跳转2、CSP信奥赛C竞赛拿奖视频课https://edu.csdn.net/course/detail/40437 点击跳转https://edu.csdn.net/course/detail/41081 点击跳转3、csp信奥赛高频考点知识详解及案例实践CSP信奥赛C动态规划https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转CSP信奥赛C标准模板库STLhttps://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转信奥赛C提高组csp-s知识详解及案例实践https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转4、csp信奥赛冲刺一等奖有效刷题题解信奥赛C普及组CSP-J一等奖通关刷题题单及题解https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转信奥赛C普及组csp-j初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转信奥赛C提高组csp-s初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转5、GESP C考级真题题解GESP(C 一级二级三级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转GESP(C 四级五级六级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转GESP(C 七级八级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转· 文末祝福 ·#includebits/stdc.husingnamespacestd;intmain(){cout跟着王老师一起学习信奥赛C;cout 成就更好的自己 ;cout csp信奥赛一等奖属于你! ;return0;}