【刷题日志】深度理解除(/)与取模(%)附水仙花数以及变种水仙花数题解

news/2024/7/8 4:45:35

请添加图片描述

文章目录

  • 🚀前言
  • 🚀除与取模
  • 🚀水仙花数
  • 🚀变种水仙花数

🚀前言

本专栏文章都直奔刷题主题,阿辉都不会在废话了,加油,少年!!!

🚀除与取模

再讲下面两道题前,阿辉先给各位讲一下,对于除和取模阿辉的心得
(整数除法):
首先提一下进制,各种进制其实只是对于数字的不同表示,对于一个数的十进制、二进制还是八进制都只是这个数的不同表示
那么关于,比如:10/ 8 = 1其实可以理解为对于10的8进制形式的右移一位 10的8进制是12右移一位刚好是1 怎么理解呢?各种进制是怎么来的,比如8进制,满8就进1
我给你一个8进制数比如127,这玩意转成十进制怎么转?
是不是:1 × 82 + 2 × 81 + 7 × 80
上面那玩意除8,最低位永远不会到8,整数除法除8不到8直接滚(舍去)
剩下的权重都掉一级 结果就是12,不就是右移一位嘛
SO除以一个数就是对该数字进制下的右移一位的结果
取模
有上面的认识,取模就好理解多了,还是8进制数127
1 × 82 + 2 × 81 + 7 × 80这玩意模8得到的就是7,因为取模得到的就是一个数不满8部分,比如10进制的最低位就不满10,16进制的最低位就不满16
SO模上一个数相当于拿到该数进制下的最低位

🚀水仙花数

描述:

在控制台输出所有的“水仙花数”。
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153

题不是很难,相信铁子们很容易就想到把个位 十位 百位 上的数字拿到,然后再求立方和判断这个思路吧!阿辉,也是这么想的。
怎么拿到各个位上上的数字很简单:

一个数字模10就可以得到它的十位上的数字,一个数字除以十它十位上的数字就来到了各位然后继续模10得到十位上的数字,百位千位等以此类推

代码很好写:

#include<stdio.h>
int main() {
//遍历所有三位数
    for(int i = 100; i <= 999; i++){
        int a = i % 10;	//十位上的数字
        int b = (i / 10) % 10;//百位上的数字
        int c = (i / 100) % 10;//千位上的数字
        if(i == a * a * a + b * b * b + c * c * c)//判断
        printf("%d",i);
    }
    return 0;
}

不过阿辉在看题解的时候总能看到骚操作
水仙花数嘛,不就是个三位数,百位上的数字是1~ 9,个位十位上的数字是0 ~ 9嘛,三个for循环不会可以表示所有的三位数嘛,然后这么写:

#include<stdio.h>
int main(){
	 for (int i = 1; i < 10; i++) { //i表示百位
        for (int j = 0; j < 10; j++) { //j表示十位
            for (int k = 0; k < 10; k++) { //k表示个位
                if ((i*i*i + j*j*j + k*k*k) == (i*100 + j*10 + k))
                    printf("%d\n", i * 100 + j * 10 + k);
            }
        }
    }
}

题解真是好东西 😁

🚀变种水仙花数

描述:

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,	
如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分
后的乘积之和等于自身,则是一个Lily Number
例如:
655 = 6 * 55 + 65 * 5
1461 = 1*461 + 14*61 + 146*1
求出 5位数中的所有 Lily Number。

变种水仙花,主要就是看你对于取模以及除法的理解
把数成功的分成两部分,这道题就做完了
代码如下:

#include<stdio.h>
#include<math.h>
int main(){
	for(int i = 10000;i < 100000;i++){
		int sum = 0;//sum记录所有分成两部分乘积的和
	//因为是5位数所以只有 1 4  2 3  3 2  4 1 这四种分法
		for(int j = 4; j > 0; j--){//循环累加
			sum += (i / (int)pow(10,j)) * (i % (int)pow(10,j));
		}
		if(sum == i)
			printf("%d ",i);
	}
    return 0 ;
}

请添加图片描述


http://lihuaxi.xjx100.cn/news/1931449.html

相关文章

开发辅助三(缓存Redisson分布式锁+分页插件)

缓存 缓存穿透&#xff1a;查询一个不存在的数据&#xff0c;由于缓存不命中&#xff0c;将大量查询数据库&#xff0c;但是数据库也没有此记录。 没有将这次查询的null写入缓存&#xff0c;导致了这个不存在的数据每次请求都要到存储层查询&#xff0c;失去了缓存的意义。 解…

虹科方案丨从困境到突破:TigoLeap方案引领数据采集与优化变革

来源&#xff1a;虹科工业智能互联 虹科方案丨从困境到突破&#xff1a;TigoLeap方案引领数据采集与优化变革 原文链接&#xff1a;https://mp.weixin.qq.com/s/H3pd5G8coBvyTwASNS_CFA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 导读 在数字化工厂和智能制造时…

[2024区块链开发入门指引] - 比特币运行原理

一份为小白用户准备的免费区块链基础教程 工欲善其事,必先利其器 Web3开发中&#xff0c;各种工具、教程、社区、语言框架.。。。 种类繁多&#xff0c;是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役&#xff1f; 参见另一篇博文&#x1f449; 2024最全面…

汽车架构解析:python cantools库快速解析arxml

文章目录 前言一、安装cantools二、官方说明文档三、cantools方法1、解析message的属性2、解析pdu中的signals3、根据message查找signals4、报文组成bytes 总结 前言 曾经有拿cantools来解析过dbc&#xff0c;用得比较浅&#xff0c;不知道可以用来解析arxml。最近有个需求需要…

基于SpringBoot的智慧生活商城系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的智慧生活商城系统,java…

分布式(4)

目录 16.分布式缓存可能会存在哪些问题&#xff1f; 17.分布式限流了解过吗&#xff1f; 18.分布式定时任务怎么实现&#xff1f; 19.什么是分布式系统的副本一致性&#xff1f;有哪些&#xff1f; 20.在分布式系统中有哪些常见的一致性算法&#xff1f; 21.谈谈你对一致性…

【排序算法】LeetCode-347. 前 K 个高频元素

347. 前 K 个高频元素。 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1&#xff1a; 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2&#xff1a; 输入: nums [1], k 1 输出: [1]提示&a…

MVCC 并发控制原理-源码解析(非常详细)

基础概念 并发事务带来的问题 1&#xff09;脏读&#xff1a;一个事务读取到另一个事务更新但还未提交的数据&#xff0c;如果另一个事务出现回滚或者进一步更新&#xff0c;则会出现问题。 2&#xff09;不可重复读&#xff1a;在一个事务中两次次读取同一个数据时&#xff0c…