【寒假每日一题】DAY1.水仙花数

news2024/11/17 6:23:17

一、题目描述

求0~100000之间的所有“水仙花数”并输出。

什么是水仙花数:

“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。

思路:

第一步:根据题目要求产生0~100000的数字【循环就能搞定】

若想知道一个数是否为水仙花数

第二步:首先需要判断这个数(i)有几位数(用cnt统计)

第三步:计算 i 十进制的每一位与cnt的次方之和(sum)

第四步:判断这个数是否与sum相等,如果相等则输出 i

根据思路一起来敲代码吧

第一步:产生0~100000的数字

#include <stdio.h>
int main()
{
    //产生0~100000的数字
	for (int i = 0; i <= 100000; i++)
	{

	}
	return 0;
}

第二步:判断 i 有几位数

让 i 循环除10,然后让cnt++,但需要注意的是,要创建一个变量来代替 i,因为 i 循环除10会改变 i 的值,最后就不能判断 i 是否等于sum

#include <stdio.h>
int main()
{
    //产生0~100000的数字
	for (int i = 0; i <= 100000; i++)
	{
        //第二步:判断 i 有几位数
		int cnt = 0; //统计 i 有几位数
		int tmp = i; 
		while (tmp)
		{
			tmp /= 10;
			cnt++;
		}
	}
	return 0;
}

第三步:计算 i 十进制的每一位与cnt的次方之和(sum)

这里还需要把 i 再次赋值给tmp,因为tmp在上一步已经变成了0

#include <stdio.h>
#include <math.h>
int main()
{
	//第一步:产生0~100000的数字
	for (int i = 0; i <= 100000; i++)
	{
		//第二步:判断 i 有几位数
		int cnt = 0; //统计 i 有几位数
		int tmp = i; 
		while (tmp)
		{
			tmp /= 10;
			cnt++;
		}

		//第三步:计算 i 十进制的每一位与cnt的次方之和
		tmp = i;
		int sum = 0;
		while (tmp)
		{
			//产生 i 的最后一位
			int a = tmp % 10;

			//计算每一位与cnt的次方之和
			sum += pow(a, cnt); //pow函数需要包含math.h头文件

			//去掉 i 最后一位
			tmp /= 10;
		}

		
	}
	return 0;
}

第四步:判断这个数是否与sum相等,如果相等则输出 i

这个就非常简单啦

#include <stdio.h>
#include <math.h>
int main()
{
	//第一步:产生0~100000的数字
	for (int i = 0; i <= 100000; i++)
	{
		//第二步:判断 i 有几位数
		int cnt = 0; //统计 i 有几位数
		int tmp = i; 
		while (tmp)
		{
			tmp /= 10;
			cnt++;
		}

		//第三步:计算 i 十进制的每一位与cnt的次方之和
		tmp = i;
		int sum = 0;
		while (tmp)
		{
			//得到 i 的最后一位
			int a = tmp % 10;

			//计算每一位与cnt的次方之和
			sum += pow(a, cnt); //pow函数需要包含math.h头文件

			//去掉 i 最后一位
			tmp /= 10;
		}

		//第四步:判断这个数是否与sum相等
		if (i == sum)
		{
			printf("%d ", i);
		}
		
	}
	return 0;
}

程序运行结果:


但是这串代码的逻辑还是有点小问题,当i = 0时,tmp也为0,0为假,不进入循环,但是0也算一位数啊

所以可以这么改

#include <stdio.h>
#include <math.h>
int main()
{
	//第一步:产生0~100000的数字
	for (int i = 0; i <= 100000; i++)
	{
		//第二步:判断 i 有几位数
		int cnt = 1; //统计 i 有几位数
		int tmp = i; 
		while (tmp > 9)
		{
			tmp /= 10;
			cnt++;
		}

		//第三步:计算 i 十进制的每一位与cnt的次方之和
		tmp = i;
		int sum = 0;
		while (tmp)
		{
			//产生 i 的最后一位
			int a = tmp % 10;

			//计算每一位与cnt的次方之和
			sum += pow(a, cnt); //pow函数需要包含math.h头文件

			//去掉 i 最后一位
			tmp /= 10;
		}

		//判断这个数是否与sum相等
		if (i == sum)
		{
			printf("%d ", i);
		}
		
		
	}
	printf("\n");
	return 0;
}

先把cnt赋值成1,因为0~100000无论怎么样,最少都会有一位数;tmp>9,意思是超过2位数就进入循环

程序运行结果:

                                                                                                               2023年1月9日

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

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

相关文章

前端vue中ts无法识别引入的vue文件,提示找不到xxx.vue模块的解决【引入新建页面或者通过router引入时报错】

一、文章引导 #mermaid-svg-7KdCeocZ1DbrWrKC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7KdCeocZ1DbrWrKC .error-icon{fill:#552222;}#mermaid-svg-7KdCeocZ1DbrWrKC .error-text{fill:#552222;stroke:#55222…

联合证券|“仰望”概念爆发,多股涨停!人气龙头股罕见“炸板”

今日涨停股中&#xff0c;以封单金额核算&#xff0c;今飞凯达、联泓新科、灵通动力等涨停板封单资金最多。 涨停家数回落 1月6日&#xff0c;沪深两市股价收盘涨停的有37只&#xff0c;跌停股有14只。下午盘面震动&#xff0c;炸板数量增多&#xff0c;兔宝宝、中远海科、久其…

64. 锚框

1. 锚框 锚框是用来预测真实的边缘框。 2. loU-交并比 ioU用来计算两个框之间的相似度 0表示无重叠&#xff0c;1表示重合 这是Jacquard指数的一个特殊情况 给定两个集合A和B&#xff1a; 杰卡德系数&#xff08;Jaccard&#xff09;可以衡量两组之间的相似性。 给定集合A和…

D. Boris and His Amazing Haircut(线段树)

传送门题意&#xff1a;给定长度为 n 的数组 A &#xff0c;代表 Boris 现在的头发长度&#xff0c;和一个长度为 n 的数组 B &#xff0c;代表他希望的发型的头发长度。理发师手里有 m 把剪刀&#xff0c;每个都只能用一次&#xff0c;剪刀的所剪的高度用 xi 给出。 对于每一把…

ASO优化之苹果和安卓的优化思路

大家都知道&#xff0c;ASO优化是指应用商店的搜索优化&#xff0c;其目的就是通过关键词的覆盖&#xff0c;让APP的搜索排名靠前&#xff0c;带来更多的曝光和用户下载量。 安卓ASO优化的思路: 1&#xff0c;关键词的覆盖。由于现在大部分的安卓商店为了商业化,所以后台几乎…

【C语言进阶】指针经典笔试题

作者:匿名者Unit 目录指针笔试题eg1.eg2.eg3.eg4.指针笔试题 eg1. 我们先来看第一题: int main() {int a[4] { 1, 2, 3, 4 };int *ptr1 (int *)(&a 1);int *ptr2 (int *)((int)a 1);printf( "%x,%x", ptr1[-1], *ptr2);return 0; }我们先来分析ptr1&…

初级篇Nginx笔记

第一章、Nginx的目录结构以及运行原理Nginx的目录结构[rootlocalhost ~]# tree /usr/local/nginx/usr/local/nginx├── client_body_temp # POST 大文件暂存目录├── conf # Nginx所有配置文件的目录│ ├── fastcgi.conf # fastcgi相关参数的配置文件│ ├── fastcgi.…

在maven项目当中创建第一个jdbc程序

大家好&#xff0c;今天给大家分享在Maven环境中创建jdbc程序 这是Maven项目的创建方式 跟着一步一步做就可以了 然后&#xff0c;创建好的Maven项目应该是这样的 导入相关的依赖 <dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-ja…

PHP date() 函数

PHP date() 函数用于格式化时间/日期。 PHP date() 函数 PHP date() 函数可把时间戳格式化为可读性更好的日期和时间。 时间戳是一个字符序列&#xff0c;表示一定的事件发生的日期/时间。 语法 string date ( string $format [, int $timestamp ] ) 参数描述format必需。规…

Python下载ts文件视频且合并

目录 一、ts文件的由来 二、下载ts文件 1.下载index.m3u8&#xff0c;并做相应处理 2.下载ts文件 三、合并ts文件 一、ts文件的由来 ts文件&#xff0c;ts即"Transport Stream"的缩写&#xff0c;特点就是要求从视频流的任一片段开始都是可以独立解码的&#xff…

Pytorch 权重衰减

目录 1、权重衰减 2、L2正则化和L1正则化 3、高维线性回归演示权重衰减 1、权重衰减 一般来说&#xff0c;我们总是可以通过去收集更多的训练数据来缓解过拟合。 但这可能成本很高&#xff0c;耗时颇多&#xff0c;或者完全超出我们的控制&#xff0c;因而在短期内不可能做到…

OpenTelemetry日志体系

前言 OpenTelemetry为了实现其可观测性有三大体系&#xff1a;Trace&#xff0c;Metrics和Log。本文将对于OpenTelemetry实现的日志体系进行详细的讲述。 日志 说到日志相比大家都能侃侃而谈&#xff1a;帮助快速定位出现的问题&#xff0c;数据追踪&#xff0c;性能分析等等…

联合证券|新年再现“A吃A” 建发股份拟控股美凯龙

2022年&#xff0c;A股上市公司之间的并购超越10起。2023年伊始&#xff0c;上市公司“A吃A”或将再添新事例。 建发股份(600153)1月8日晚公告&#xff0c;公司正在谋划经过现金方法协议收购红星美凯龙控股集团有限公司&#xff08;以下简称“红星控股”&#xff09;持有的美凯…

导致 MySQL 索引失效

1、索引失效情况1&#xff1a;非最左匹配 最左匹配原则指的是&#xff0c;以最左边的为起点字段查询可以使用联合索引&#xff0c;否则将不能使用联合索引。 我们本文的联合索引的字段顺序是 sn name age&#xff0c;我们假设它们的顺序是 A B C&#xff0c;以下联合索引的…

YOLOv8来啦 | 详细解读YOLOv8的改进模块!YOLOv5官方出品YOLOv8!

YOLOv8是Ultralytics开发的 YOLO&#xff08;You Only Look Once&#xff09;物体检测和图像分割模型的最新版本&#xff0c;详细介绍可以参考Ultralytics发布的网址&#xff0c;可以通过ultralytics python 包获取代码&#xff0c;暂时还没有官方公布代码 安装ultralytics py…

再见,Python 循环,向量化已超神

使用向量化 -- Python中循环的超级快速替代品 我们在几乎所有的编程语言中都学习过循环。所以&#xff0c;默认情况下&#xff0c;只要有重复性的操作&#xff0c;我们就会开始实施循环。但是当我们处理大量的迭代&#xff08;数百万/数十亿行&#xff09;时&#xff0c;使用循…

啊哈哈哈,2023年Python学习清单来喽;这清单都上齐了,怎么不收藏啊

不知不觉已经在CSDN写了三百多篇博客&#xff0c;这些博客中&#xff0c;Python相关的内容占了绝大多数&#xff0c;而这些与Python有关的内容中&#xff0c;绝大多数又都是我个人学习的总结&#xff0c;本文希望把我的Python学习过程做一个总结&#xff0c;也希望能够帮助不同…

【Java】阻塞队列

【Java】阻塞队列 什么是阻塞队列&#xff1f; 阻塞队列&#xff08;BlockingQueue&#xff09;是一个支持两个附加操作的队列。这2个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法&#xff1a;当队列满时&#xff0c;队列会阻塞插入元素的线程&#xff0c;直到…

4.3 集成运放电路简介

从本质上看&#xff0c;集成运放是一种高性能的直接耦合放大电路。尽管品种繁多&#xff0c;内部结构也各不相同&#xff0c;但是它们的基本组成部分、结构形式和组成原则基本一致。因此&#xff0c;对于典型电路的分析具有普遍意义&#xff0c;一方面可以从中理解集成运放的性…

MapGIS用投影变换功能绘制多条测线

1 问题的提出 在做测线设计的时候,经常要在MapGIS里投点,投线。投点可以用section自带功能实现,但投线还是另有讲究的。可以用MapGIS自带的投影变换功能来实现。 先看下我已知线在奥维地图里是什么样的。 下面就来对这些线,进行投影变换,生成wl线文件,从而可以放入设计…