news 2026/8/28 22:51:41

判断水仙花数并输出,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/25 11:11:51

海量数据中找出最大的前100个(find_topk)最小堆算法

我来帮你实现这个寻找前100个最大数据的算法。这个算法的时间复杂度是O(n log 100)&#xff0c;空间复杂度是O(100)。 C实现 #include <iostream> #include <vector> #include <queue> #include <functional> #include <random>using namespac…

作者头像 李华
网站建设 2026/8/27 17:28:52

Claude Code Router多模型集成实战:打造智能开发工作流

Claude Code Router多模型集成实战&#xff1a;打造智能开发工作流 【免费下载链接】claude-code-router Use Claude Code without an Anthropics account and route it to another LLM provider 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-router …

作者头像 李华
网站建设 2026/8/28 8:05:34

水稻病害检测(YOLO数据集,多分类,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫)

是自己利用LabelImg工具进行手工标注&#xff0c;数据集制作不易&#xff0c;请尊重版权&#xff08;稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫&#xff09; 如果需要yolv8检测模型和数据集放在一起的压缩包&#xff0c;可以关注&#xff1a;最新最…

作者头像 李华
网站建设 2026/8/29 3:27:21

ABB机器人省气装置在薄板焊接中的实际效果

在现代制造业中&#xff0c;随着对产品质量和生产效率要求的不断提高&#xff0c;自动化焊接技术逐渐取代了传统的人工操作。ABB焊接机器人因其高精度、稳定性和灵活性&#xff0c;在多个工业领域得到了广泛应用。特别是在薄板焊接中&#xff0c;ABB焊接机器人的表现尤为突出。…

作者头像 李华
网站建设 2026/8/28 17:01:50

京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?

1. 传统GC的内存管理问题text传统GC标记对象方式&#xff1a; [对象头] [标记位] → 需要修改对象内存 问题&#xff1a;标记阶段需要STW&#xff0c;大堆停顿时间长2. ZGC的核心创新&#xff1a;元数据外置textZGC方案&#xff1a; [对象指针] [元数据标记] → 不修改对象本…

作者头像 李华
网站建设 2026/8/27 16:25:03

硬件 - 高速协议设计整合

目录 1.DDR 1.1 DDR设计规范概览 1.2 DDR PCB Layout要求 ​​​​​​​ 1.3 设计审批流程 ​​​​​​​ 1.4 常见错误以及防范 ------------------------------------------------------------------------------------------------------------------------ 2.…

作者头像 李华