C++ 假设今天是星期日,那么过a^b天之后是星期几?

题目

假设今天是星期日,那么过a^b天之后是星期几?

 

【输入】

两个正整数a,b,中间用单个空格隔开。0<a≤100,0<b≤10000。

 

【输出】

一个字符串,代表过a^b天之后是星期几。

 

其中,Monday是星期一,Tuesday是星期二,Wednesday是星期三,Thursday是星期四,Friday是星期五,Saturday是星期六,Sunday是星期日。

 

【输入样例】

3 2000

 

【输出样例】

Tuesday

假设今天是星期日,那么过a^b天之后是星期几?

 

【输入】

两个正整数a,b,中间用单个空格隔开。0<a≤100,0<b≤10000。

 

【输出】

一个字符串,代表过a^b天之后是星期几。

 

其中,Monday是星期一,Tuesday是星期二,Wednesday是星期三,Thursday是星期四,Friday是星期五,Saturday是星期六,Sunday是星期日。

 

【输入样例】

3 2000

 

【输出样例】

Tuesday

 

 

 

 

01

题目分析

    对于这道题,直观的想法是求出a^b的值,然后用这个值对7取模,就能知道是星期几了。但是注意看a和b的取值范围,a^b的值会是一个非常大的值,远超出数值的表达范围了,所以我们要用到模运算的一些性质。

 

1. 模运算的定义

    模运算是基于整除的概念,给定两个整数a和m(m不为0),a除以m的余数记作a mod m,满足关系式a = k*m + r,其中k是整数(称为商),r是满足0 <= r < m的余数。

 

2. 模运算的分配律:

(a + b) mod m = [(a mod m) + (b mod m)] mod m

(a * b) mod m=[(a mod m) * (b mod m)] mod m

 

模运算的分配律允许我们在进行乘法运算时,不必等待所有乘数相乘之后再取模,而是可以在每一步乘法之后立即取模,最终结果仍然保持一致。

 

举例说明

    假设我们要计算 3456789 × 9876543对于模100的结果,直接计算乘积将会得到一个非常大的数字,但利用模运算的分配律,我们可以分步进行:

 

    •    首先,3456789 mod 100 = 89,9876543 mod 100=43。

    •    然后,计算这两个余数的乘积:89 * 43 = 3827

    •    最后,对乘积取模:3827 mod 100 = 27;

 

因此,利用余数的这一性质,我们可以在不直接计算大数幂的情况下高效地求解(a^b) mod m的问题,这对于处理周期性问题(如本题中的星期计算)极为有用。这种方法不仅在数学上严谨,而且在计算机科学和密码学等领域有着广泛的应用。

 

 

 

 

02

代码

 

#include <iostream>#include <string>using namespace std;

int main() {    int a, b;    cin >> a >> b;        // 一周的天数    const int MOD = 7;    int result = 1;

    // 逐步计算 a^b % 7    for (int i = 0; i < b; i++) {        result *= a;        result %= MOD; // 每次对7取余,结果用于判断星期几    }        // 从Sunday开始,对应的天数    string week_days[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};        // 输出结果    cout << week_days[result] << endl;        return 0;}

对于代码中,为什么可以用累乘之后再取模的方法,最后就能得到(a^b) mod 7的值,这里同学们可以自己利用分配律推演一下,比如输入的是8和2,那么两次for循环后,得到的计算结果如下:

 

(8 % 7 * 8 ) % 7 

 

根据分配律,可以进一步转化:

((8 % 7) % 7 * 8 %7 ) % 7  

 

因为 (8 % 7) % 7 其实就等于 (8 % 7),所以可以进一步转化:

( 8 % 7 * 8 %7 ) % 7

 

也就是 ( 8 * 8) % 7 ,即8^2 mod 7

 

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

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

相关文章

自定义波形图View,LayoutInflater动态加载控件保存为本地图片

效果图: 页面布局: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="…

C#多线程并行计算实例

在C#中实现多线程并行计算可以通过使用 Task 和 Parallel 类来实现。这里给出两个简单的示例&#xff0c;一个是使用 Task&#xff0c;另一个是使用 Parallel.ForEach。 使用 Task 进行多线程并行计算 using System; using System.Threading.Tasks;class Program {static voi…

Kubernetes基于helm部署jenkins

Kubernetes基于helm安装jenkins jenkins支持war包、docker镜像、系统安装包、helm安装等。在Kubernetes上使用Helm安装Jenkins可以简化安装和管理Jenkins的过程。同时借助Kubernetes&#xff0c;jenkins可以实现工作节点的动态调用伸缩&#xff0c;更好的提高资源利用率。通过…

MySQL Innodb存储引擎中,当页默认的大小是16K时,页中最多存放多少行的记录?

1、题目引入 Innodb存储引擎是面向行的(row-oriented)&#xff0c;也就是说数据的存放按行进行&#xff0c;每页存放的行记录是有硬性定义的&#xff0c;当页默认的大小是16K时&#xff0c;页中最多存放多少行的记录&#xff1f; A、1600 行B、8192 行C、16383 行D、7992 行 …

基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现

随着旅游业的迅速发展&#xff0c;个性化旅游推荐系统成为提升用户体验和促进旅游市场增长的重要工具。本研究旨在设计并实现一种基于Python协同过滤的旅游景点推荐系统&#xff0c;结合Django框架、MySQL数据库存储、Bootstrap前端框架以及echarts数据可视化技术&#xff0c;为…

Flask发布一个及时止损(止盈)服务(二)

生成可视化的止盈止损结果&#xff08;图片&#xff09; 妈的&#xff0c;还是得用 akshare&#xff0c;还需要指定python版本3.9以上 conda remove -n fonxsys --all conda search pythonconda create -n fonxsys python3.9 conda activate fonxsys python.exe -m pip insta…

【粉丝福利 | 第8期】值得收藏!推荐10个好用的数据血缘工具

⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 目前市面上绝…

数据迁移探索

概念 数据迁移是指将数据从一个计算环境或存储系统移动到另一个计算环境或存储系统。 随着公司业务的发展&#xff0c;出于成本优化、系统升级、分库分表、整合数据等原因。数据迁移工作在日常工作中会陆续出现。 我们可以将数据迁移分成两个部分&#xff0c;第一部分是数据…

springboot高职院校毕业生信息管理系统-计算机毕业设计源码27889

摘 要 基于Java语言开发的高职院校毕业生信息管理系统旨在提供一个便捷、高效的方式来管理毕业生的相关信息。系统包括学生基本信息管理、成绩管理、就业信息管理等模块&#xff0c;通过界面友好、操作简单的设计&#xff0c;方便管理员快速查询和更新学生信息。系统还提供数据…

采用前后端分离技术架构+java语言开发的全套产科信息管理系统源码 可与医院HIS、LIS、PACS、RIS等系统进行对接

采用前后端分离技术架构java语言开发的全套产科信息管理系统源码 可与医院HIS、LIS、PACS、RIS等系统进行对接 什么是产科信息管理系统-建档管理&#xff1f; 产科信息管理系统建档管理通过信息技术实现了孕产妇健康信息的电子化、网络化和智能化管理&#xff0c;提高了医疗服…

Riscv 架构的合规测试

为啥直接关注riscv-arch-test&#xff0c;是因为RISCOF 测试框架使用的是riscv-arch-test 1. The architectural test 架构测试是一个单一的测试&#xff0c;代表了可编译和运行的最小测试代码。它是用汇编代码编写的&#xff0c;其产品是test signature。一个架构测试可能由…

微信小程序推送消息java版

需求背景 使用springboot2微信小程序推送消息。百度了一下看了一篇文章整体还可以&#xff0c;这里推荐一下。 教程解析 1、微信平台开通订阅消息。 2、添加模板。 3、springboot后台接口开发 微信平台验证地址接口开发&#xff0c;然后部署到公网服务器。 4、微信平台验…

基于FPGA的数字信号处理(15)--定点数的舍入模式(6)向0取整fix

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式&#xff1a;向上取整fix。 10进制数的fix fix&#xff1a;也叫 向0取整。它的舍入方式是数据往0的方向&#xff0c;舍入到最近的整数&#xff0c;比如1.75 fix到2&#xf…

Docker技术简介

Docker是一种开源的容器化平台&#xff0c;旨在简化应用程序的创建、部署和运行过程。它通过将应用程序及其所有依赖项打包到一个称为容器的可移植单元中来实现这一目标。以下是Docker技术的简介&#xff1a; Docker的核心概念 1、容器&#xff08;Container&#xff09;&…

将WordPress的文章重新排序的3个方法

有效的调整文章显示顺序看开可以更好突出内容&#xff0c;还可以保持网站的新鲜感&#xff0c;今天我将带您了解三种方法&#xff0c;通过重新排序文章显著提升网站的吸引力。我们将逐步讲解从调整设置到使用插件以及“置顶”文章的每一种方法&#xff0c;确保WordPress 新手也…

Linux将mysql导出

1、基础导出 要在Linux系统中将MySQL数据库导出&#xff0c;通常使用mysqldump命令行工具。以下是一个基本的命令示例&#xff0c;用于导出整个数据库&#xff1a; mysqldump -u username -p database_name > export_filename.sql 其中&#xff1a; username 是你的MySQL用…

利用python进行数据分析 —— python正则表达式(持续更新中!)

文章目录 利用python进行数据分析 —— python基础知识进阶重点笔记&#xff1a;正则表达式re.match 匹配开头re.search 全文匹配re.sub 替换删除re.compile 编译正则findall 返回列表finditer 返回迭代器re.split 分割返回列表(?P...) 分组匹配正则表达符号、修饰符通配符1 ^…

谷歌上新!最强开源模型Gemma 2,27B媲美LLaMA3 70B,挑战3140亿Grok-1

文章目录 LMSYS Chatbot Arena&#xff1a;开源模型性能第一Gemma为什么这么强&#xff1f;架构创新对AI安全性的提升 A领域竞争激烈&#xff0c;GPT-4o 和 Claude 3.5 Sonnet 持续发力&#xff0c;谷歌迅速跟进。 谷歌为应对AI竞争所采取的策略&#xff1a;依靠 Gemini 闭源模…

hdu物联网硬件实验3 按键和中断

学院 班级 学号 姓名 日期 成绩 实验题目 按键和中断 实验目的 实现闪灯功能转换 硬件原理 无 关键代码及注释 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…

AI端侧大模型未来发展趋势

一、定义与优势 端侧AI大模型是指基于移动终端设备上的大型神经网络模型&#xff0c;这些模型能够在本地设备&#xff08;如智能手机、PC、汽车、XR以及物联网设备等&#xff09;上直接运行和处理人工智能算法&#xff0c;实现如图像识别、语音识别、自然语言处理等任务。端侧…