大水仙花数求解

输入位数,求解水仙花数。暴力求解,位数如果太多,会超时。

思路:

(1)11333355和33331155看上去是不一样的两个数,但是它们又一样,因为相同数字出现的次数一样。

(2)使用递归。每次递归,“统计”这个数中某个数字(cur_digit)出现的次数,直到0-9十个数字全被统计。不断递归的结果,是:“可用”的数字位数(unused_bit)越来越少,与此同时,这个数(cur_sum)也越来越大。当0到9的个数全部统计结束,这个cur_sum就是这个数本身。

运行结果,19位水仙花数有4个,用时0.18秒。如果要求更大的水仙花数,得用biginteger。

程序如下:

#include <iostream>
using namespace std;void f(int cur_digit, int unused_bit, long long cur_sum);int n;
long long global_pow[10] = { 0 };
long long min_limit = 1;int main()
{cin >> n;clock_t t1 = clock();global_pow[1] = 1;for (int i = 2; i < 10; i++){//计算i^nlong long _pow = 1;for (int j = 0; j < n; j++){_pow = _pow * i;}global_pow[i] = _pow;}f(0, n, 0);	//cur_digit, unused_bit, cur_sumclock_t t2 = clock();cout << t2 - t1 << "毫秒" << endl;return 0;}void f(int cur_digit, int unused_bit, long long cur_sum)
{if (unused_bit == 0 || cur_digit == 9){cur_sum = cur_sum + unused_bit * global_pow[cur_digit];long long temp = cur_sum;long long sum = 0;int bit_num = 0;while (temp){int bit = temp % 10;sum = sum + global_pow[bit];temp = temp / 10;bit_num++;}if (sum == cur_sum && bit_num == n){cout << sum << endl;}return;}//if (cur_sum < min_limit * 10){for (int i = 0; i <= unused_bit; i++){f(cur_digit + 1, unused_bit - i, cur_sum + i * global_pow[cur_digit]);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云卷云舒:如何持续降低云数据库的成本?

数据库在云计算领域内是一个利润空间较大的产品体系&#xff0c;但是如果成本控制策略控制、市场推广不达预期&#xff0c;很有可能出现“负效益”&#xff0c;本文就谈谈个人看法&#xff0c;从云计算服务提供商的角度。 一、首先是技术手段方面 弹性伸缩&#xff1a;快速地…

windows系统 集成开发环境 IntelliJ IDEA的配置maven步骤

在 Windows 系统上配置 IntelliJ IDEA 以使用 Maven 需要遵循几个步骤。Maven 是一个流行的项目管理和构建自动化工具&#xff0c;它可以帮助开发者管理项目的依赖、构建和部署。IntelliJ IDEA 提供了对 Maven 的内置支持&#xff0c;使得配置过程变得相对简单。以下是详细的配…

存储服务器主要运用在哪些方面

存储服务器是一种专门为数据存储设计的一款服务器设备&#xff0c;是为存储设备、存储系统或者存储的解决方案。存储服务器一般是由硬件设备、存储软件、操作系统和网络连接组成的&#xff0c;主要用来存储大量的数据&#xff0c;如图片、视频和文件等内容。 在数据管理方面&am…

深入理解Spring中的集合依赖注入

目录 1. 创建一个配置类来定义Bean 2. 在组件中注入Bean 构造方法注入 Setter方法注入 总结 如果集合仅仅是实体类的一个内部属性&#xff0c;并且与实体类的其他属性紧密相关&#xff0c;那么将其作为实体类的一个属性可能更加合适。 如果集合需要独立配置&#xff0c;那…

使用navicat导出mysql离线数据后,再导入doris的方案

一、背景 doris本身是支持直接从mysql中同步数据的&#xff0c;但有时候&#xff0c;客户不允许我们使用doris直连mysql&#xff0c;此时就需要客户配合将mysql中的数据手工导出成离线文件&#xff0c;我们再导入到doris中 二、环境 doris 1.2 三、方案 doris支持多种导入…

【C语言】一道相当有难度的指针题目(某大厂笔试真题)超详解

这是比较复杂的题目&#xff0c;但是如果我们能够理解清楚各个指针代表的含义&#xff0c;画出各级指针的关系图&#xff0c;这道题就迎刃而解了。 学会这道笔试题&#xff0c;相信你对指针的理解&#xff0c;对数组&#xff0c;字符串的理解都会上一个档次。 字符串存储使用的…

使用Arduino UNO和蓝牙模块制作智能小车

目录 概述 1 硬件结构 1.1 硬件组成 1.2 蓝牙模块介绍 1.3 控制板IO引脚定义 2 机械结构 3 固件设计 4 App设计 5 参考文献 概述 本文主要介绍使用Arduino UNO作为主板&#xff0c;用于控制电机和接收蓝牙模块数据。蓝牙模块用于从手机App上接收控制信号&#xff0c;使…

Windows下搭建Redis Sentinel

下载安装程序 下载Redis关于Windows安装程序&#xff0c;下载地址 下载成功后进行解压&#xff0c;解压如下&#xff1a; 配置redis和sentinel 首先复制三份redis.windows.conf&#xff0c;分别命名为&#xff1a;redis.6379.conf、redis.6380.conf、redis.6381.conf&…

Spring基础 - SpringMVC请求流程和案例

Spring基础 - SpringMVC请求流程和案例 什么是MVC 用一种业务逻辑、数据、界面显示分离的方法&#xff0c;将业务逻辑聚集到一个部件里面&#xff0c;在改进和个性化定制界面及用户交互的同时&#xff0c;不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理…

【漏洞复现】SpringBlade export-user接口存在SQL注入漏洞

漏洞描述 SpringBlade 是一个由商业级项目升级优化而来的微服务架构 采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建,完全遵循阿里巴巴编码规范。提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。SpringBlade export-user接口存在SQL注…

4核8G服务器性能怎么样?4核8G12M配置能支持多少人同时访问?

4核8G服务器性能怎么样?4核8G12M配置能支持多少人同时访问&#xff1f;腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线&#xff1f;通用型-4核8G-180G-2000G&#xff0c;2000GB月流量&#xff0c;系统盘为180GB SSD盘&#xff0c;12M公网带宽&#xff0c;下载速度峰值为…

Doris中的本地routineload环境,用于开发回归测试用例

----------------2024-2-6-更新-------------- doris的routineload&#xff0c;就是从kafka中加载数据到表&#xff0c;特点是定时、周期性的从kafka取数据。 要想在本地开发测试routine load相关功能&#xff0c;需要配置kafka环境&#xff0c;尤其是需要增加routine load回…

C语言中的数据类型-强转

强制类型转换 概念&#xff1a;将某种类型的数据转化我们需要的数据类型&#xff0c;注意强制类型转化是临时强转&#xff0c;不会改变本身的数据类型。 强转又分为显式强转和隐式转化 显示强转是按照我们的要求进行转化 格式&#xff1a;(需要转化数据类型)变量名 #inclu…

fast.ai 深度学习笔记(五)

深度学习 2&#xff1a;第 2 部分第 10 课 原文&#xff1a;medium.com/hiromi_suenaga/deep-learning-2-part-2-lesson-10-422d87c3340c 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它&#xff0c;…

优化elemen-ui的el-table的tree树结构因数据过多卡顿问题

最近遇到一个要在elemen-ui的el-table放一个树结构的表数据 但是因为数据实在过多&#xff0c;而且列也有四五列&#xff0c;还有操作列 dom操作频繁导致页面非常的卡顿 网上看了很多种方法以及elementui的官方方法 使用lazy和load方法终于解决 对应el-table <el-table v…

定金和订金主要区别

定金和订金主要区别 定金和订金主要区别利弊分析合同示例订金合同示例定金合同示例 定金和订金主要区别 对比项定金订金定义为保证债务履行&#xff0c;先行支付一定数额的货币作为担保预付款&#xff0c;表明购房意愿的一种支付手段数额限制通常不得超过主合同标的额的20%数额…

Stable Diffusion 模型下载:GhostMix(幽灵混合)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 GhostMix 是绝对让你惊艳的模型&#xff0c;也是自己认为现在最强的2.5D模型。我认为模型的更新应该是基于现有的画面整体不大变的前提下&#xff0c;提高模型的成…

单片机学习笔记---蜂鸣器工作原理

目录 蜂鸣器介绍 蜂鸣器的驱动方式 ULN2003D芯片工作原理 实战预备知识&#xff1a;基础乐理 音名的分组 全音和半音的关系 音高的表示 五线谱中的符号定义 简谱上的符号定义 C调音符与频率对照表 相关计算 蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件&a…

给我的用户kewei,升级为免密root权限

要在Ubuntu系统中让用户 kewei 具有免密码执行sudo命令的权限&#xff0c;你需要编辑sudoers文件。这可以通过使用visudo命令来安全地进行。请按照以下步骤操作&#xff1a; 打开终端。 输入以下命令来编辑sudoers文件&#xff1a; sudo visudo这将使用默认的文本编辑器&#…

C++,stl,list容器详解

目录 1.list基本概念 2.list构造函数 3.list的赋值和交换 4.list大小操作 5.list的插入的删除 6.list数据存取 7.list反转和排序 排序案例 1.list基本概念 2.list构造函数 #include<bits/stdc.h> using namespace std;void print(const list<int> &lk) …