目录
示例
坂本智彦算法
案例1忽略闰年
案例 2 闰年
输出
复杂性
首页 后端开发 C++ 坂本智彦的算法-寻找星期几

坂本智彦的算法-寻找星期几

Sep 02, 2023 pm 07:09 PM
算法 寻找 星期

坂本智彦的算法-寻找星期几

在本文中,我们将讨论什么是 Tomohiko Sakamoto 算法以及如何使用该算法来识别给定日期是一周中的哪一天。有多种算法可以知道星期几,但这种算法是最强大的一种。该算法以尽可能最小的时间和最小的空间复杂度找到该日期出现的月份中的哪一天。

问题陈述 - 我们根据格鲁吉亚历给出一个日期,我们的任务是使用 Tomohiko Sakamoto 的算法找出给定日期是一周中的哪一天。

示例

输入 - 日期 = 30,月份 = 04,年份 = 2020

输出 - 给定日期是星期一

输入 - 日期 = 15,月份 = 03,年份 = 2012

输出 - 给定日期是星期四

输入 - 日期 = 24,月份 = 12,年份 = 2456

输出 - 给定日期是星期日

坂本智彦算法

现在让我们讨论坂本智彦算法背后的直觉。

众所周知,根据格鲁吉亚历,公元 1 月 1 日是星期一。

案例1忽略闰年

我们首先讨论忽略所有闰年的情况,即一年共有 365 天。

由于一月有 31 天,一周有 7 天,所以我们可以说一月有 7*4 + 3 天,这意味着二月的第一天总是在一月的第一天之后 3 天。 p>

由于二月有 28 天(闰年除外),它本身是 7 的倍数,我们可以说 3 月 1 日将与 2 月 1 日在同一天,这意味着 3 月 1 日也将是 3 1 月 1 日之后的几天。

现在,对于 4 月,3 月有 31 天,即 7*4 +3,这意味着它将发生在 3 月 1 日的 3 天之后。因此,我们可以说 4 月 1 日将发生在 1 月 1 日 1 日后 6 天。

我们现在将构建一个数组,其中 arr[i] 表示相对于 1 月 1 日这一天,第 i 个月发生后的额外天数。

我们有 arr[] = { 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 }。

案例 2 闰年

现在让我们讨论一下闰年的情况。

每四年,我们的计算中就会增加一天,但每百年则不增加一天。我们必须考虑到这些额外的日子。为此,我们将使用公式 -

年/ 4(每 4 年)

– 年 / 100(对于每 100 年,即 4 的倍数但仍然不是闰年,我们会将其从闰年中删除)

+ 年/ 400(每第 400 年,它是 100 的倍数,但仍然是一个循环年)

这个公式将为我们提供准确的闰年数。不过,有一个例外。

现在,我们知道 2 月 29 日被视为闰日,而不是 1 月 0 日。

这意味着我们不需要将一年中的前两个月纳入计算中,因为闰日对其没有影响。因此,如果是一月或二月,我们将从年份中减去 1 进行补偿。因此,在这些月份中,year/4 的值应该基于上一年而不是当前年份。

为了解决闰年问题,我们可以将 2 月之后每个月的 arr[] 值减去 1,以填补空白。这样就解决了闰年的问题。我们需要对算法进行以下更改,以使其在闰年和平年都能发挥作用。

arr[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }

如果当前月份是一月或二月,我们需要将年份减 1。

我们需要将模数内的年增量修改为year +year/4 –year/100 +year/400而不是year。此更改是必要的,以考虑闰年中的额外一天并相应地调整计算。

示例

此方法的代码是:

#include <bits/stdc++.h>
using namespace std;
// code to find out the day number of the given date
int Weekday(int year, int month, int day) {
   int arr[] = { 0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 };
	
   if ( month < 3 )
      year -= 1;
   return ( ( year + year / 4 - year / 100 + year / 400 + arr[month - 1] + day) % 7 );
}

int main(void) {
   int day = 9, month = 9, year = 2020;
   int d = Weekday(year, month, day);
   string days[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
   cout<< " The given date is on "; 
   cout << days[d];
   return 0;
}
登录后复制

输出

The given date is on Wednesday
登录后复制

复杂性

时间复杂度 - 此方法的时间复杂度为 O(1)

空间复杂度- 这种方法的空间复杂度是 O(1),因为我们没有使用任何额外的空间。

结论 - 在本文中,我们讨论了 Tomohiko Sakamoto 的算法以及该算法背后的直觉

以上是坂本智彦的算法-寻找星期几的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

CLIP-BEVFormer:显式监督BEVFormer结构,提升长尾检测性能 CLIP-BEVFormer:显式监督BEVFormer结构,提升长尾检测性能 Mar 26, 2024 pm 12:41 PM

写在前面&笔者的个人理解目前,在整个自动驾驶系统当中,感知模块扮演了其中至关重要的角色,行驶在道路上的自动驾驶车辆只有通过感知模块获得到准确的感知结果后,才能让自动驾驶系统中的下游规控模块做出及时、正确的判断和行为决策。目前,具备自动驾驶功能的汽车中通常会配备包括环视相机传感器、激光雷达传感器以及毫米波雷达传感器在内的多种数据信息传感器来收集不同模态的信息,用于实现准确的感知任务。基于纯视觉的BEV感知算法因其较低的硬件成本和易于部署的特点,以及其输出结果能便捷地应用于各种下游任务,因此受到工业

使用C++实现机器学习算法:常见挑战及解决方案 使用C++实现机器学习算法:常见挑战及解决方案 Jun 03, 2024 pm 01:25 PM

C++中机器学习算法面临的常见挑战包括内存管理、多线程、性能优化和可维护性。解决方案包括使用智能指针、现代线程库、SIMD指令和第三方库,并遵循代码风格指南和使用自动化工具。实践案例展示了如何利用Eigen库实现线性回归算法,有效地管理内存和使用高性能矩阵操作。

探究C++sort函数的底层原理与算法选择 探究C++sort函数的底层原理与算法选择 Apr 02, 2024 pm 05:36 PM

C++sort函数底层采用归并排序,其复杂度为O(nlogn),并提供不同的排序算法选择,包括快速排序、堆排序和稳定排序。

人工智能可以预测犯罪吗?探索CrimeGPT的能力 人工智能可以预测犯罪吗?探索CrimeGPT的能力 Mar 22, 2024 pm 10:10 PM

人工智能(AI)与执法领域的融合为犯罪预防和侦查开辟了新的可能性。人工智能的预测能力被广泛应用于CrimeGPT(犯罪预测技术)等系统,用于预测犯罪活动。本文探讨了人工智能在犯罪预测领域的潜力、目前的应用情况、所面临的挑战以及相关技术可能带来的道德影响。人工智能和犯罪预测:基础知识CrimeGPT利用机器学习算法来分析大量数据集,识别可以预测犯罪可能发生的地点和时间的模式。这些数据集包括历史犯罪统计数据、人口统计信息、经济指标、天气模式等。通过识别人类分析师可能忽视的趋势,人工智能可以为执法机构

命运方舟寻找有烛光闪耀的地方在哪 命运方舟寻找有烛光闪耀的地方在哪 Mar 20, 2024 pm 05:46 PM

命运方舟新地图新版本的开启也是有着全新声望的任务,除了罗温地图外还有一个日常是在智慧岛的,前置的任务是从贝隆南开启的,很多小伙伴做到“寻找有烛光闪耀的地方”这一环的时候就没有指引的了,也是好奇具体的位置在哪,下面为大家带来该任务的攻略!命运方舟寻找有烛光闪耀的地方任务攻略在智慧岛里面的房间当中,大厅还有个走廊,能够进入到地下室,走进去就可以看到后续任务的位置了,如图:

改进的检测算法:用于高分辨率光学遥感图像目标检测 改进的检测算法:用于高分辨率光学遥感图像目标检测 Jun 06, 2024 pm 12:33 PM

01前景概要目前,难以在检测效率和检测结果之间取得适当的平衡。我们就研究出了一种用于高分辨率光学遥感图像中目标检测的增强YOLOv5算法,利用多层特征金字塔、多检测头策略和混合注意力模块来提高光学遥感图像的目标检测网络的效果。根据SIMD数据集,新算法的mAP比YOLOv5好2.2%,比YOLOX好8.48%,在检测结果和速度之间实现了更好的平衡。02背景&动机随着远感技术的快速发展,高分辨率光学远感图像已被用于描述地球表面的许多物体,包括飞机、汽车、建筑物等。目标检测在远感图像的解释中

算法在 58 画像平台建设中的应用 算法在 58 画像平台建设中的应用 May 09, 2024 am 09:01 AM

一、58画像平台建设背景首先和大家分享下58画像平台的建设背景。1.传统的画像平台传统的思路已经不够,建设用户画像平台依赖数据仓库建模能力,整合多业务线数据,构建准确的用户画像;还需要数据挖掘,理解用户行为、兴趣和需求,提供算法侧的能力;最后,还需要具备数据平台能力,高效存储、查询和共享用户画像数据,提供画像服务。业务自建画像平台和中台类型画像平台主要区别在于,业务自建画像平台服务单条业务线,按需定制;中台平台服务多条业务线,建模复杂,提供更为通用的能力。2.58中台画像建设的背景58的用户画像

实时加SOTA一飞冲天!FastOcc:推理更快、部署友好Occ算法来啦! 实时加SOTA一飞冲天!FastOcc:推理更快、部署友好Occ算法来啦! Mar 14, 2024 pm 11:50 PM

写在前面&笔者的个人理解在自动驾驶系统当中,感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素,如行驶在路上的车辆、路旁的行人、行驶过程中遇到的障碍物、路上的交通标志等,从而帮助下游模块做出正确合理的决策和行为。在一辆具备自动驾驶功能的车辆中,通常会配备不同类型的信息采集传感器,如环视相机传感器、激光雷达传感器以及毫米波雷达传感器等等,从而确保自动驾驶车辆能够准确感知和理解周围环境要素,使自动驾驶车辆在自主行驶的过程中能够做出正确的决断。目

See all articles