欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!
专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。
适合人群:
- 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
- 希望系统学习C++/Python编程的初学者
- 想要提升算法与编程能力的编程爱好者
附上汇总帖:GESP认证C++编程真题解析 | 汇总
编程题
B3954 乘法问题
【题目来源】
洛谷:B3954 [GESP202403 二级] 乘法问题 - 洛谷
【题目描述】
小A最近刚刚学习了乘法,为了帮助他练习,我们给他若干个正整数,并要求他将这些数乘起来。
对于大部分题目,小A可以精准地算出答案,不过,如果这些数的乘积超过10 6 10^6106,小A就不会做了。
请你写一个程序,告诉我们小A会如何作答。
【输入】
第一行一个整数n nn,表示正整数的个数。
接下来n nn行,每行一个整数a aa。小A需要将所有的a aa乘起来。
【输出】
输出一行,如果乘积超过10 6 10^6106,则输出>1000000;否则输出所有数的乘积。
【输入样例】
2 3 5【输出样例】
15【算法标签】
《洛谷 B3954 乘法问题》 #循环结构# #GESP# #2024#
【代码详解】
#include<bits/stdc++.h>// 包含标准库头文件usingnamespacestd;// 使用标准命名空间intn;// 定义全局变量n,用于存储输入的数字个数(注意有两个分号)intmain()// 主函数{cin>>n;// 从标准输入读取数字个数nintmul=1;// 初始化乘积变量mul为1// 循环读取n个数字并计算它们的乘积for(inti=1;i<=n;i++){intx;cin>>x;// 读取当前数字xmul*=x;// 将x乘入总乘积mul// 检查乘积是否超过1000000if(mul>1000000){cout<<">1000000"<<endl;// 如果超过,输出提示信息return0;// 并立即结束程序}}cout<<mul<<endl;// 输出最终的乘积值return0;// 程序正常结束}【运行结果】
2 3 5 15B3955 小杨的日字矩阵
【题目来源】
洛谷:B3955 [GESP202403 二级] 小杨的日字矩阵 - 洛谷
【题目描述】
小杨想要构造一个N × N N\times NN×N的日字矩阵(N NN为奇数),具体来说, 这个矩阵共有N NN行, 每行N NN个字符, 其中最左列、最右列都是|, 而第一行、最后一行、以及中间一行(即第N + 1 2 \frac{N+1}{2}2N+1行)的第个字符都是2 ∼ N − 1 2\sim N-12∼N−1,其余所有字符都是半角小写字母x。例如,一个N = 5 N=5N=5的日字矩阵如下:
|---| |xxx| |---| |xxx| |---|请你帮小杨根据给定的N NN打印出对应的“日字矩阵"。
【输入】
一行一个整数N NN(5 ≤ N ≤ 49 5≤N≤495≤N≤49,保证N NN为奇数)。
【输出】
输出对应的“日字矩阵"。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出N NN行,每行除了换行符外恰好包含N NN个字符,这些字符要么是-,要么是|,要么是x。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。
【输入样例】
5【输出样例】
|---| |xxx| |---| |xxx| |---|【算法标签】
《洛谷 B3955 小杨的日字矩阵》 #循环结构# #GESP# #2024#
【代码详解】
#include<bits/stdc++.h>// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间constintN=55;// 定义最大矩阵尺寸intn;// 存储矩阵的实际尺寸chara[N][N];// 定义字符矩阵intmain(){cin>>n;// 输入矩阵尺寸n// 填充矩阵for(inti=1;i<=n;i++){// 遍历行for(intj=1;j<=n;j++){// 遍历列if(j==1||j==n){// 如果是第一列或最后一列a[i][j]='|';// 填充竖线}elseif(i==1||i==n||i==(n+1)/2){// 如果是第一行、最后一行或中间行a[i][j]='-';// 填充横线}else{// 其他位置a[i][j]='x';// 填充x}}}// 输出矩阵for(inti=1;i<=n;i++){// 遍历行for(intj=1;j<=n;j++){// 遍历列cout<<a[i][j];// 输出当前字符}cout<<endl;// 换行}return0;// 程序正常结束}【运行结果】
5 |---| |xxx| |---| |xxx| |---|