一些通过数学分析解决的算法题汇总

写在前面

如果觉得写得好,或者有所帮助,记得点个关注和点个赞,不胜感激!
我发现最近经常会遇到一些需要通过数学分析去解决的问题,做的时候想着各种方法,然后看到题解,发现可以用数学分析的方式,找到非常快的解决办法,整个人就emmmmm了,所以这里开这篇博文,用来记录自己碰到的可以用数学分析的方式解决的算法问题,不断更新。

“树根”相关问题

“树根”在维基百科的定义如下:

在数学中,数根(又称位数根或数字根Digital root)是自然数的一种性质,换句话说,每个自然数都有一个数根。数根是将一正整数的各个位数相加(即横向相加),若加完后的值大于10的话,则继续将各位数进行横向相加直到其值小于十为止,或是,将一数字重复做数字和,直到其值小于十为止,则所得的值为该数的数根。例如54817的数根为7,因为5+4+8+1+7=2525大于10则再加一次,2+5=77小于10,则7为54817的数根

那么“树根”又有什么用途呢?

数根可以计算模运算的同余,对于非常大的数字的情况下可以节省很多时间。数字根可作为一种检验计算正确性的方法。例如,两数字的和的数根等于两数字分别的数根的和。另外,数根也可以用来判断数字的整除性,如果数根能被3或9整除,则原来的数也能被3或9整除。

接下来讨论我们怎么求出树根。我们把 1 到 30 的树根列出来。

原数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
数根: 1 2 3 4 5 6 7 8 9  1  2  3  4  5  6  7  8  9  1  2  3  4  5  6  7  8  9  1  2  3 

可以发现数根 9 个为一组, 1 - 9 循环出现。我们需要做就是把原数映射到树根就可以,循环出现的话,想到的就是取余了。结合这个规律,对于给定的 n 有三种情况。

  • n 是 0 ,数根就是 0。
  • n 不是 9 的倍数,数根就是 n 对 9 取余,即 n mod 9。
  • n 是 9 的倍数,数根就是 9。

我们可以把两种情况统一起来,我们将给定的数字减 1,相当于原数整体向左偏移了 1,然后再将得到的数字对 9 取余,最后将得到的结果加 1 即可。原数是 n,树根就可以表示成 (n-1) mod 9 + 1,可以结合下边的过程理解。

原数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
偏移: 0 1 2 3 4 5 6 7 8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
取余: 0 1 2 3 4 5 6 7 8  0  1  2  3  4  5  6  7  8  0  1  2  3  4  5  6  7  8  0  1  2  
数根: 1 2 3 4 5 6 7 8 9  1  2  3  4  5  6  7  8  9  1  2  3  4  5  6  7  8  9  1  2  3 

所以,求一个数的树根,一句代码就可以实现,即(num - 1) % 9 + 1;,这里给出一个题目,一句代码即可。
在这里插入图片描述

public int addDigits(int num) {return (num - 1) % 9 + 1;
}

计算阶乘0的个数

这个我之前单独写过一篇文章,这里就不赘述了,地址。

四平方和定理

四平方和定理,意思是任何正整数都能表示成四个平方数的和。少于四个平方数的,像 12 12 12 这种,可以补一个 0 0 0 也可以看成四个平方数, 12 = 4 + 4 + 4 + 0 12 = 4 + 4 + 4 + 0 12=4+4+4+0。知道了这个定理,对于题目要找的解,其实只可能是 1 , 2 , 3 , 4 1, 2, 3, 4 1,2,3,4 其中某个数。

Legendre’s three-square theorem ,这个定理表明,如果正整数 n 被表示为三个平方数的和,那么 n n n 不等于 4 a ∗ ( 8 b + 7 ) 4^a*(8b+7) 4a(8b+7) a a a b b b 都是非负整数。换言之,如果 n = = 4 a ∗ ( 8 b + 7 ) n == 4^a*(8b+7) n==4a(8b+7) ,那么他一定不能表示为三个平方数的和,同时也说明不能表示为一个、两个平方数的和,因为如果能表示为两个平方数的和,那么补个 0 0 0,就能凑成三个平方数的和了。

一个、两个、三个都排除了,所以如果 n = = 4 a ∗ ( 8 b + 7 ) n == 4^a*(8b+7) n==4a(8b+7),那么 n n n 只能表示成四个平方数的和了。所以代码的话,我们采取排除的方法。

  • 首先考虑答案是不是 1 1 1,也就是判断当前数是不是一个平方数。

  • 然后考虑答案是不是 4 4 4,也就是判断 n 是不是等于 4 a ∗ ( 8 b + 7 ) 4^a*(8b+7) 4a(8b+7)

  • 然后考虑答案是不是 2 2 2,当前数依次减去一个平方数,判断得到的差是不是平方数。

  • 以上情况都排除的话,答案就是 3 3 3

在这里插入图片描述

public int numSquares(int n) {if (isSquare(n)) {return 1;}int temp = n;while (temp % 4 == 0) {temp /= 4;}if (temp % 8 == 7) {return 4;}for (int i = 1; i * i < n; i++) {if (isSquare(n - i * i)) {return 2;}}return 3;
}private boolean isSquare(int n) {int sqrt = (int) Math.sqrt(n);return sqrt * sqrt == n;
}

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

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

相关文章

演示求解中学数学题(Mathematica)

#高二解析几何题# 在[-3,4]区间上动曲线2x^24xc跟曲线1/3x^3x^2x有两个公共点,求c的取值范围. (现在高中的数学题难度已经算是高了;需要高等数学知识了) 直接求解: ClearAll["Global*"]; xmin -4; xmax 5; ymin -15; ymax 50; \ xnum 4; ynum 2; v Table[Ma…

算法-数学题

目录 50. Pow(x, n)54. 螺旋矩阵剑指 Offer 10- I. 斐波那契数列169. 多数元素剑指 Offer 39. 数组中出现次数超过一半的数字 191. 位1的个数剑指 Offer 15. 二进制中1的个数剑指 Offer 56 - I. 数组中数字出现的次数剑指 Offer 56 - II. 数组中数字出现的次数 II剑指 Offer 58…

文心一言 VS chatgpt (15)-- 算法导论3.2 4~5题

四、函数 ⌈ lg ⁡ n ⌉ ! \lceil \lg n \rceil ! ⌈lgn⌉! 多项式有界吗&#xff1f;函数 ⌈ lg ⁡ lg ⁡ n ⌉ ! \lceil \lg \lg n \rceil ! ⌈lglgn⌉! 多项式有界吗&#xff1f; 文心一言&#xff1a; chatgpt&#xff1a; 对于第一个问题&#xff0c;函数 ⌈ lg ⁡ n…

让Chatgpt帮你出Python练习题

最近发现Chatgpt有一个很棒的功能&#xff0c;感觉是让培训机构失业呀。 你可以让Chatgpt出Python练习题&#xff0c;能涵盖任意的知识点&#xff0c;对于初学者来说简直是福音。 Chatgpt在编程上面的对话能力是好于其他场景的&#xff0c;因为编程是机器语言&#xff0c;cha…

chatgpt赋能python:用Python计算数学题,速度快效果好!

用Python计算数学题&#xff0c;速度快效果好&#xff01; 在现代化的信息时代&#xff0c;计算机已经成为了我们生活中不可缺少的工具之一。而对于数学爱好者来说&#xff0c;用计算机进行数学计算已经变得非常普遍&#xff0c;因为使用计算机能够快速解决数学难题&#xff0…

MJ基础入门之注册:超详细注册 Midjourney 及使用方法

如何注册并使用 Midjourney Midjourney是一款优秀的AI图像生成工具&#xff0c;它的综合能力十分强大且易于上手。使用Midjourney&#xff0c;您可以在一分钟内生成4张图像&#xff0c;这是非常快的。不仅如此&#xff0c;国外的很多图像创作者都在使用Midjourney&#xff0c;并…

Claude的奇妙之旅:一起探索人工智能的无限可能

是一款由Anthropic公司开发的人工智能应用&#xff0c;可以在Slack中使用。可以理解和生成自然语言&#xff0c;帮助用户完成各种任务&#xff0c;如写小说、编写代码、解释概念等。的特点是&#xff1a; - 是免费的&#xff0c;不需要申请或下载&#xff0c;只需要在Slack中添…

注册claude AI账号 slack工作区账号

Claude 是建立在 slack工作区的一个AI人工助手&#xff0c;更像是将chatgpt集成到了会议模式&#xff0c;一个账号实际上拥有了你的会议室和你的AI助手&#xff0c;你可以让你的朋友和同事进入你的房间体验。 Claude是不是openai的产物&#xff1f;目前还不知道&#xff0c;不…

idea插件 Bito – GPT-4 ChatGPT AI写代码 分析代码 生成测试用例

Bito介绍 Bito官网 https://bito.ai/ Bito AI是一款通用的人工智能辅助工具&#xff0c;基于最新的ChatGPT实现&#xff0c;开发者可以提出任何技术问题&#xff0c;根据自然语言提示生成代码。 Bito AI可以用于编写代码、理解语法、编写测试用例、分析解释代码、注释代码、…

chatgpt怎么用?对新媒体作者有什么用处?

chatgpt怎么用&#xff1f;作为一名新媒体作者&#xff0c;我认为ChatGPT是一款非常有用的工具。在这篇文章中&#xff0c;我将详细介绍ChatGPT的产品介绍、用处以及能为人们带来的好处。 一.Chatgpt是什么 ChatGPT是一款基于人工智能技术的聊天机器人&#xff0c;使用了开源…

3 分钟利用 FastGPT 和 Laf 将 ChatGPT 接入企业微信

原文链接&#xff1a;https://forum.laf.run/d/556 FastGPT 是一个超级&#x1f42e;&#x1f37a;的 ChatGPT 平台项目&#xff0c;功能非常强大&#xff1a; ✅ 集成了 ChatGPT、GPT4 和 Claude ✅ 可以使用任意文本来训练自己的知识库、文档库&#xff0c;而且知识库专有模…

亲测好用!免费英语学习版ChatGPT,国内能直接用!(内测名额有限)

ChatGPT大火几个月了 热度似乎没有减退的意思 每天见识到别人晒出最新应用截图 自己却还迟迟没有上手使用 但是&#xff0c;只要是用过它的人 都会马上承认它的魔力 聊闲天、编脚本、学面试 做总结、做翻译、写作文 只要释放几句“咒语”&#xff08;prompt&#xff09; 就能看…

chatGPT替代方案

最近chatGPT太火了&#xff0c;分享几个可用的地址 1.Edge插件Sider 打开edge外接程序界面Microsoft Edge Addons 搜索Sider ,第一个就是&#xff0c;点击获取添加到浏览器就可以使用了&#xff0c;无需魔法&#xff0c;搜索时右边栏会出现chartGPT的回答&#xff0c;非常棒 …

ChatGPT在工业领域的用法

在工业数字化时代&#xff0c;我们需要怎么样的ChatGPT&#xff1f; 近日&#xff0c;ChatGPT热度高居不下&#xff0c;强大的人机交互能力令人咋舌&#xff0c;在国内更是掀起一股讨论热潮。一时间&#xff0c;这场由ChatGPT引起的科技飓风&#xff0c;使得全球最顶尖科技力量…

ChatGPT:数字时代革新与展望

ChatGPT&#xff1a;数字时代革新与展望 AGI 未来的愿景&#xff1a;建安全有益的 AGI OpenAI团队对AGI的展望&#xff1a; 我们希望 AGI 能够赋予人类在宇宙中最大程度地繁荣发展的能力。我们不期望未来是一个不合格的乌托邦&#xff0c;但我们希望将好的最大化&#xff0c;将…

ChatGPT将改变教育,而不是摧毁它

01 学校和大学的反应迅速而果断 就在 OpenAI 于 2022 年 11月下旬发布ChatGPT 的几天后&#xff0c;该聊天机器人被广泛谴责为一种免费的论文写作、应试工具&#xff0c;它很容易在作业中作弊。 美国第二大学区洛杉矶联合大学立即阻止了OpenAI网站从其学校网络访问。其他人很…

让ChatGPT谈谈科技发展

ChatGPT谈科技发展 讲讲科技发展的那些事儿谈谈ChatGPT对科技发展的影响谈谈你对ChatGPT的看法ChatGPT对科技发展的负面影响ChatGPT的存在是利是弊&#xff1f;关于全国科技者工作日 讲讲科技发展的那些事儿 谈谈ChatGPT对科技发展的影响 谈谈你对ChatGPT的看法 ChatGPT对科技发…

ChatGPT的诞生和发展

ChatGPT的诞生和发展 ChatGPT是一种基于GPT模型的聊天机器人。GPT模型是一种基于深度学习的自然语言处理模型&#xff0c;由OpenAI团队开发&#xff0c;可以生成与输入文本相关的连续文本。ChatGPT的诞生和发展&#xff0c;可以追溯到GPT模型的开发与应用。 一、GPT模型的开…

大模型底层原理与引用开发范式

大模型基本原理 temperature: 随机性top_prepetition_penalty: 重复性 大模型时代以前 LLM时代的开发范式 Prompt工程 Embedding辅助 大模型微调 必备能力和工具 ChatPaper

【花雕学AI】爆款ChatGPT的核心算法和技术逻辑到底是什么?

一、ChatGPT是一种基于GPT模型的聊天机器人 由OpenAI研究中心开发&#xff0c;于2022年11月30日发布。它可以根据用户的输入&#xff0c;生成自然、流畅、有趣的对话回复。它的技术逻辑主要是利用大规模的预训练语言模型&#xff08;LLM&#xff09;&#xff0c;通过Transforme…