2026/3/29 23:39:54
网站建设
项目流程
建设银行网站上不去了,网页游戏网站链接,wordpress适合建什么网站,网站做实名认证欢迎大家订阅我的专栏#xff1a;算法题解#xff1a;C与Python实现#xff01; 本专栏旨在帮助大家从基础到进阶 #xff0c;逐步提升编程能力#xff0c;助力信息学竞赛备战#xff01;
专栏特色 1.经典算法练习#xff1a;根据信息学竞赛大纲#xff0c;精心挑选…欢迎大家订阅我的专栏算法题解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 201≤N≤20。从第2 22行开始的N NN行每行一个正整数为待判断的正整数。约定这些正整数小于1 0 12 10^{12}1012。【输出】输出N NN行对应N NN个正整数是否为幸运数如是则输出T否则输出F。提示不需要等到所有输入结束再依次输出可以输入一个数就判断一个数并输出再输入下一个数。【输入样例】2 16347 76344【输出样例】T F【算法标签】《洛谷 B3850 幸运数》 #函数与递归# #GESP# #2023#【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglong// 使用长整型constintN15;// 数组大小用于存储数字的各位intn;// 测试用例数量inta[N];// 存储数字的各位数字/** * 递归计算数字的数字根 * 数字根反复将数字的各位相加直到得到一位数 * 例如38 - 3811 - 112 * param x 输入数字 * return 数字根 */intcalc(intx){// 调试输出// cout x x endl;// 如果已经是一位数直接返回if(x9){returnx;}// 计算各位数字之和intres0;while(x){resx%10;// 加上个位数字x/10;// 去掉个位}// 递归计算数字根returncalc(res);}/** * 检查数字是否符合特定规则 * 规则 * 1. 从个位开始第1位奇数位置的数字乘以7 * 2. 计算乘积的数字根 * 3. 所有处理后的数字之和能被8整除 * param x 要检查的数字 * return 如果处理后数字之和能被8整除返回true否则false */boolcheck(intx){// 将数字分解为各位数字intcur0;// 数字位数while(x){a[cur]x%10;// 存储个位x/10;// 去掉个位}// 处理奇数位置的数字for(inti1;icur;i){if(i%21)// 奇数位置从个位开始算第1位{inttmpa[i]*7;// 乘以7a[i]calc(tmp);// 计算数字根}}// 计算处理后的数字之和intans0;for(inti1;icur;i){ansa[i];}// 判断和是否能被8整除returnans%80;}signedmain()// 因为使用了#define int long long{// 输入测试用例数量cinn;// 处理每个测试用例while(n--){intx;cinx;// 检查数字并输出结果if(check(x)){coutTendl;// 符合条件}else{coutFendl;// 不符合条件}}return0;}【运行结果】2 16347 T 76344 F