GESP认证C++编程真题解析 | 202603 二级

📅 发布时间:2026/7/16 5:49:10 👁️ 浏览次数:
GESP认证C++编程真题解析 | 202603 二级
编程题B4497 数数【题目来源】洛谷[B4497 GESP202603 二级] 数数 - 洛谷【题目描述】对于正整数n nn如果n nn的所有数位中包含恰好3 33个2 22Alice 会认为这个正整数是美丽的。例如正整数24122 2412224122中包含3 33个2 22所以24122 2412224122是美丽的正整数132 132132中包含1 11个2 22所以132 132132不是美丽的正整数212322 212322212322中包含4 44个2 22所以212322 212322212322不是美丽的。Alice 想知道正整数L LL到正整数R RR包括L LL和R RR中有多少美丽的正整数你能帮她数一数吗【输入】输入共2 22行第一行为正整数L LL第二行为正整数R RR。【输出】输出一行包含一个整数C CC表示L LL到R RR中C CC美丽数的数量。【输入样例】2221 2223【输出样例】2【算法标签】《洛谷 B4497 数数》 #循环结构# #GESP# #2026#【代码详解】#includebits/stdc.h// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间intl,r,ans;// 定义三个整型变量l(左边界), r(右边界), ans(结果计数器)// 判断一个整数是否恰好包含3个数字2boolcheck(intx){intres0;// 计数器记录数字2出现的次数// 逐位检查数字x的每一位while(x){// 检查当前个位数是否为2if(x%102){res;// 如果是2计数器加1}x/10;// 去掉当前个位数继续检查下一位}// 返回判断结果数字2是否恰好出现3次returnres3;}intmain()// 主函数入口{cinlr;// 输入区间范围[l, r]// 遍历区间[l, r]中的每一个整数for(intil;ir;i){// 检查当前数字i是否满足条件if(check(i)){ans;// 如果满足条件计数器加1}}coutansendl;// 输出满足条件的数字个数return0;// 程序正常结束}【运行结果】2221 2223 2B4498 画画【题目来源】洛谷[B4498 GESP202603 二级] 画画 - 洛谷【题目描述】输入一个正整数n nn你需要绘制一个n nn行n nn列的正方形绘制规则如下正方形的四个顶点使用绘制除顶点外第1 11行与第n nn行使用-绘制除顶点外第1 11列与第n nn列使用|绘制正方形内部使用*绘制。【输入】一行一个正整数n nn。【输出】输出共n nn行表示对应的正方形。【输入样例】5【输出样例】--- |***| |***| |***| ---【算法标签】《洛谷 B4498 画画》 #循环结构# #GESP# #2026#【代码详解】#includebits/stdc.h// 包含所有标准库头文件usingnamespacestd;// 使用标准命名空间constintN105;// 定义常量N表示数组的最大尺寸intn;// 变量n表示实际使用的尺寸chara[N][N];// 定义二维字符数组a用于存储图案intmain()// 主函数入口{cinn;// 输入n表示图案的尺寸// 第一阶段初始化整个数组为*for(inti1;in;i){for(intj1;jn;j){a[i][j]*;// 将所有位置初始化为星号}}// 第二阶段绘制边框for(inti1;in;i){for(intj1;jn;j){// 如果是第一行或最后一行设置为-横线if(i1||in){a[i][j]-;}// 如果是第一列或最后一列设置为|竖线if(j1||jn){a[i][j]|;}}}// 第三阶段设置四个角的字符为a[1][1];// 左上角a[1][n];// 右上角a[n][1];// 左下角a[n][n];// 右下角// 第四阶段输出整个图案for(inti1;in;i){for(intj1;jn;j){couta[i][j];// 输出当前位置的字符}coutendl;// 每输出完一行后换行}return0;// 程序正常结束}【运行结果】5 --- |***| |***| |***| ---