广元市网站建设_网站建设公司_域名注册_seo优化
2026/1/19 16:51:12 网站建设 项目流程

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


编程题

B3956 字母求和

【题目来源】

洛谷:B3956 [GESP202403 三级] 字母求和 - 洛谷

【题目描述】

小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母a代表了正整数1 11,字母b代表了正整数2 22;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母A代表了负整数− 65 −6565。小杨同学利用这种放缩对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如aAc对应的加密前的整数为1 + ( − 65 ) + 3 = − 61 1+(−65)+3=−611+(65)+3=61

对于给定的字符串,请你计算出它对应的加密前的整数是多少。

【输入】

第一行一个正整数n nn,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串T,代表加密后得到的字符串。

【输出】

输出一行一个整数,代表加密前的整数。

【输入样例】

3 aAc

【输出样例】

-61

【算法标签】

《洛谷 B3956 字母求和》 #字符串(入门)# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间intn;// 定义一个整数n(虽然代码中未使用)string t;// 定义一个字符串t用于存储输入intmain(){cin>>n>>t;// 输入整数n和字符串t(注意n在后续代码中未被使用)intsum=0;// 初始化求和变量为0// 遍历字符串中的每个字符for(inti=0;i<t.size();i++){if(t[i]>='a'&&t[i]<='z'){// 如果是小写字母// 计算字母在字母表中的位置(a=1,b=2,...)并累加sum+=(t[i]-'a'+1);}elseif(t[i]>='A'&&t[i]<='Z'){// 如果是大写字母// 取字母ASCII码的负值并累加sum+=-1*t[i];}}cout<<sum<<endl;// 输出最终计算结果return0;// 程序正常结束}

【运行结果】

3 aAc -61

B3957 完全平方数

【题目来源】

洛谷:B3957 [GESP202403 三级] 完全平方数 - 洛谷

【题目描述】

小杨同学有一个包含n nn个非负整数的序列A AA,他想要知道其中有多少对下标组合⟨ i , j ⟩ ⟨i,j⟩i,j1 ≤ i < j ≤ n 1≤i<j≤n1i<jn),使得A i + A j A_i+A_jAi+Aj是完全平方数。

如果x xx是完全平方数,则存在非负整数y yy使得y × y = x y×y=xy×y=x

【输入】

第一行一个非负整数n nn,表示非负整数个数。
第二入行包含n nn个非负整数A 1 , A 2 , … A n A_1,A_2,…A_nA1,A2,An,表示序列A AA包含的非负整数。

【输出】

输出一行一个整数表示答案。

【输入样例】

5 1 4 3 3 5

【输出样例】

3

【算法标签】

《洛谷 B3957 完全平方数》 #数组# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间constintN=1005;// 定义数组最大长度intn,cnt;// n: 数字个数,cnt: 计数器inta[N];// 存储数字的数组intmain(){cin>>n;// 输入数字个数n// 读取n个数字存入数组afor(inti=1;i<=n;i++)cin>>a[i];// 双重循环遍历所有数字对for(inti=1;i<=n;i++){// 外层循环,第一个数字for(intj=i+1;j<=n;j++){// 内层循环,第二个数字(保证i<j)intt=a[i]+a[j];// 计算两数之和intsq=sqrt(t);// 计算和的平方根// 检查是否为完全平方数if(sq*sq==t)cnt++;// 如果是完全平方数,计数器加1}}cout<<cnt<<endl;// 输出满足条件的数字对数量return0;// 程序正常结束}

【运行结果】

5 1 4 3 3 5 3

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询