news 2026/8/22 1:36:00

判断水仙花数并输出,c++

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
判断水仙花数并输出,c++

以下是使用C++实现的相同逻辑代码:

#include<iostream>#include<vector>#include<string>#include<cmath>// 判断一个数是否为水仙花数boolisNarcissistic(intn){std::string numStr=std::to_string(n);intnumDigits=numStr.length();intsum=0;// 遍历每一位数字for(inti=0;i<numDigits;i++){// 将字符数字转换为整数intdigit=numStr[i]-'0';// 计算该位数字的 n 次幂并累加sum+=static_cast<int>(std::pow(digit,numDigits));}// 判断总和是否等于原数returnsum==n;}// 查找指定范围内的水仙花数std::vector<int>findNarcissisticNumbers(intmin,intmax){std::vector<int>results;for(inti=min;i<=max;i++){if(isNarcissistic(i)){results.push_back(i);}}returnresults;}intmain(){// 输出所有3位水仙花数(100-999)std::vector<int>narcissisticNumbers=findNarcissisticNumbers(100,999);// 格式化输出if(!narcissisticNumbers.empty()){std::cout<<"3位水仙花数有:"<<std::endl;for(intnum:narcissisticNumbers){std::cout<<num<<std::endl;}}else{std::cout<<"该范围内没有水仙花数"<<std::endl;}return0;}

以下是使用纯数学运算(不用字符串转换)的替代版本:

#include<iostream>#include<vector>// 判断一个数是否为水仙花数(纯数学方法)boolisNarcissistic(intn){intoriginal=n;intnumDigits=0;inttemp=n;// 计算位数while(temp>0){numDigits++;temp/=10;}intsum=0;temp=original;// 遍历每一位数字while(temp>0){intdigit=temp%10;// 计算digit的numDigits次幂intpower=1;for(inti=0;i<numDigits;i++){power*=digit;}sum+=power;temp/=10;}// 判断总和是否等于原数returnsum==original;}// 查找指定范围内的水仙花数std::vector<int>findNarcissisticNumbers(intmin,intmax){std::vector<int>results;for(inti=min;i<=max;i++){if(isNarcissistic(i)){results.push_back(i);}}returnresults;}intmain(){// 输出所有3位水仙花数(100-999)std::vector<int>narcissisticNumbers=findNarcissisticNumbers(100,999);// 格式化输出if(!narcissisticNumbers.empty()){std::cout<<"3位水仙花数有:"<<std::endl;for(intnum:narcissisticNumbers){std::cout<<num<<std::endl;}}else{std::cout<<"该范围内没有水仙花数"<<std::endl;}return0;}

两个版本的功能相同,都能正确找到153、370、371、407这4个3位水仙花数。第一个版本更接近原Lua代码的逻辑,使用字符串处理;第二个版本使用纯数学运算,在某些情况下性能更好。

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

来那替尼在非小细胞肺癌中的应用:HER2突变患者的新希望

在肺癌的复杂治疗版图中&#xff0c;非小细胞肺癌&#xff08;NSCLC&#xff09;占据着重要地位&#xff0c;而其中HER2突变这一特殊类型&#xff0c;曾长期让患者和医生感到棘手。HER2突变在非小细胞肺癌中虽占比不算高&#xff0c;但具有独特的生物学行为和临床特征。它往往与…

作者头像 李华
网站建设 2026/8/21 4:51:02

主要挑战与发展趋势

主要挑战与发展趋势 核心挑战&#xff1a; 合规成本高企&#xff1a;反洗钱&#xff08;AML&#xff09;、数据隐私&#xff08;GDPR&#xff09;、外汇管制等要求因国而异&#xff0c;机构需投入大量资源适配&#xff0c;合规风险成为主要壁垒。 区域差异显著&#xff1a;支付…

作者头像 李华
网站建设 2026/8/20 8:43:04

DataGear数据可视化:5分钟快速上手企业级分析平台

DataGear数据可视化&#xff1a;5分钟快速上手企业级分析平台 【免费下载链接】datagear DataGear数据可视化分析平台&#xff0c;自由制作任何您想要的数据看板 项目地址: https://gitcode.com/datageartech/datagear DataGear作为一款基于Java开发的开源数据可视化分析…

作者头像 李华
网站建设 2026/8/21 7:01:34

哪些业务场景适合人机耦合

人机耦合凭借 AI 高效处理标准化工作、人工聚焦复杂决策与深度服务的优势&#xff0c;在多个行业的诸多业务场景中均能发挥价值&#xff0c;尤其适配需兼顾效率与专业性、标准化与个性化的场景。销售与营销类‍ ‍高端产品销售&#xff1a;像高端家电、奢侈品、大额保险产品…

作者头像 李华
网站建设 2026/8/21 20:02:04

【别找了全在这】2025硬件工程师经典笔试题集

1.下面是一些基本的数字电路知识问题&#xff0c;请简要回答&#xff1f;(1) 什么是 Setup 和 Hold 时间&#xff1f; 答&#xff1a; Setup/Hold Time 用于测试芯片对输入信号和时钟信号之间的时间要求。建立时间 (Setup Time)是指触发器的时钟信号上升沿到来以前&#xff0c;…

作者头像 李华