当前位置: 首页 > news >正文

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
http://www.cnnetsun.cn/news/101361.html

相关文章:

  • EmotiVoice如何确保克隆声音不侵犯原声权?
  • 【Java毕设全套源码+文档】基于springboot的人力资源管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 【Java毕设全套源码+文档】基于Java的贫困地区儿童资助系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • jQuery EasyUI 应用 - 创建展开行明细编辑表单的 CRUD 应用
  • 9、量子计算在供应链实时路线优化中的应用
  • 【JVS更新日志】物联网、低代码、项目管理12.17更新说明!
  • 网络安全证书合集,看这一篇就够啦!
  • 打卡信奥刷题(2549)用C++实现信奥 P2113 看球泡妹子
  • 四天学会一本书的公司靠谱吗
  • 低成本高质量:为何越来越多团队选择EmotiVoice?
  • EmotiVoice与主流语音框架对比:兼容性与扩展性优势
  • 2025年网络安全人员薪酬趋势
  • EmotiVoice是否支持方言合成?当前进展说明
  • EmotiVoice语音合成系统灰度总结报告撰写框架
  • EmotiVoice语音合成系统负载均衡部署方案探讨
  • 基于SSM框架的后台管理系统设计与实现
  • Python基础练习5.按顺序输出整数
  • 毕设救星:Spring Boot + Vue 打造“数字非遗”——中华传统文化展示与文创众筹平台
  • 政策模型出现再平衡:美联储主席遴选路径反转,哈塞特在“联储独立性约束条件”下明确立场
  • 医院信息科经常听到的那些话
  • 校园实验室|基于springboot 校园实验室管理系统(源码+数据库+文档)
  • AI的下一个十年,属于Agent!读懂这篇,你就抓住了未来十年的最大红利!
  • 基于springboot + vue律师咨询系统(源码+数据库+文档)
  • 基于springboot + vue动物园管理系统(源码+数据库+文档)
  • 锐捷网络设备(盒式交换机,路由器,EG网关,无线AC、AP)恢复出厂设置
  • 锐捷RG-AP220-E胖模式配置
  • 2026毕设ssm+vue基于框架的临时摊位管理系统论文+程序
  • 重磅推出!郑老师团队26年22门统计课程,发文即可退款
  • jQuery EasyUI 布局 - 创建折叠面板
  • jQuery EasyUI 布局 - 动态添加标签页(Tabs)