news 2026/6/12 12:08:59

GESP认证C++编程真题解析 | B3850 [GESP202306 四级] 幸运数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | B3850 [GESP202306 四级] 幸运数

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

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

适合人群:

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

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


【题目来源】

洛谷:[B3850 GESP202306 四级] 幸运数 - 洛谷

【题目描述】

小明发明了一种 “幸运数”。一个正整数,其偶数位不变(个位为第1 11位,十位为第2 22位,以此类推),奇数位做如下变换:将数字乘以7 77,如果不大于9 99则作为变换结果,否则把结果的各位数相加,如果结果不大于9 99则作为变换结果,否则(结果仍大于9 99)继续把各位数相加,直到结果不大于9 99,作为变换结果。变换结束后,把变换结果的各位数相加,如果得到的和是8 88的倍数,则称一开始的正整数为幸运数。

例如,16347 1634716347:第1 11位为7 77,乘以7 77结果为49 4949,大于9 99,各位数相加为13 1313,仍大于9 99,继续各位数相加,最后结果为4 44;第3 33位为3 33,变换结果为3 33;第5 55位为1 11,变换结果为7 77。最后变化结果为76344 7634476344,对于结果76344 7634476344其各位数之和为24 2424,是8 88的倍数。因此16347 1634716347是幸运数。

【输入】

输入第一行为正整数N NN,表示有N NN个待判断的正整数。约定1 ≤ N ≤ 20 1 \le N \le 201N20

从第2 22行开始的N NN行,每行一个正整数,为待判断的正整数。约定这些正整数小于1 0 12 10^{12}1012

【输出】

输出N NN行,对应N NN个正整数是否为幸运数,如是则输出T,否则输出F

提示:不需要等到所有输入结束再依次输出,可以输入一个数就判断一个数并输出,再输入下一个数。

【输入样例】

2 16347 76344

【输出样例】

T F

【算法标签】

《洛谷 B3850 幸运数》 #函数与递归# #GESP# #2023#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong// 使用长整型constintN=15;// 数组大小,用于存储数字的各位intn;// 测试用例数量inta[N];// 存储数字的各位数字/** * 递归计算数字的数字根 * 数字根:反复将数字的各位相加,直到得到一位数 * 例如:38 -> 3+8=11 -> 1+1=2 * @param x 输入数字 * @return 数字根 */intcalc(intx){// 调试输出// cout << "x " << x << endl;// 如果已经是一位数,直接返回if(x<=9){returnx;}// 计算各位数字之和intres=0;while(x){res+=x%10;// 加上个位数字x/=10;// 去掉个位}// 递归计算数字根returncalc(res);}/** * 检查数字是否符合特定规则 * 规则: * 1. 从个位开始(第1位),奇数位置的数字乘以7 * 2. 计算乘积的数字根 * 3. 所有处理后的数字之和能被8整除 * @param x 要检查的数字 * @return 如果处理后数字之和能被8整除返回true,否则false */boolcheck(intx){// 将数字分解为各位数字intcur=0;// 数字位数while(x){a[++cur]=x%10;// 存储个位x/=10;// 去掉个位}// 处理奇数位置的数字for(inti=1;i<=cur;i++){if(i%2==1)// 奇数位置(从个位开始算第1位){inttmp=a[i]*7;// 乘以7a[i]=calc(tmp);// 计算数字根}}// 计算处理后的数字之和intans=0;for(inti=1;i<=cur;i++){ans+=a[i];}// 判断和是否能被8整除returnans%8==0;}signedmain()// 因为使用了#define int long long{// 输入测试用例数量cin>>n;// 处理每个测试用例while(n--){intx;cin>>x;// 检查数字并输出结果if(check(x)){cout<<"T"<<endl;// 符合条件}else{cout<<"F"<<endl;// 不符合条件}}return0;}

【运行结果】

2 16347 T 76344 F
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:27:10

LobeChat缓存策略设计:加快重复内容加载速度

LobeChat缓存策略设计&#xff1a;加快重复内容加载速度 在如今的 AI 应用浪潮中&#xff0c;用户早已不再满足于“能用”&#xff0c;而是追求“好用”——响应要快、交互要顺、体验要稳。尤其是在使用像 LobeChat 这类基于大语言模型&#xff08;LLM&#xff09;的聊天工具时…

作者头像 李华
网站建设 2026/6/10 15:37:22

【Java毕设全套源码+文档】基于springboot的灾害应急救援平台设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/11 16:23:09

M3U8技术解析:流媒体传输的核心与实战应用

一、什么是M3U8&#xff1f; M3U8是一种基于文本的播放列表文件格式&#xff0c;它是M3U格式的UTF-8编码版本。这种格式专门为HTTP Live Streaming&#xff08;HLS&#xff09;流媒体传输协议设计&#xff0c;已经成为现代流媒体服务的标准之一。 M3U8文件的基本结构示例&…

作者头像 李华
网站建设 2026/6/11 19:14:45

13、Linux 文件归档、压缩与查找全攻略

Linux 文件归档、压缩与查找全攻略 1. 文件归档与压缩 1.1 问题提出 当需要压缩一个包含多个子目录和文件的目录时,如果使用 gzip 或 bzip2 并加上 -r(递归)选项,会得到多个单独压缩的文件,这并非我们想要的结果。例如,要压缩一个包含 100 个文件的目录,使用上述方法会…

作者头像 李华
网站建设 2026/6/12 4:41:18

S2B2C私域会员电商如何重构企业经营逻辑

当公域流量成本高企、用户粘性持续走低&#xff0c;越来越多成长型企业开始转向“私域经营”——而S2B2C私域会员电商系统&#xff0c;正是连接“流量、转化、留存”的新基建。以CRMEB这类系统为例&#xff0c;它并非简单的“线上商城”&#xff0c;而是通过“平台&#xff08;…

作者头像 李华