`
FlyingFairy
  • 浏览: 12686 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

小学期OJ——中国剩余定理

阅读更多

小学期快开始了,才刚刚开始刷小学期的OJ,起码找点做OJ题的感觉。前面的题也没啥难度,之后遇到了这个有关中国剩余定理的题。网上也有了很多 这题的解法。

题目描述

 

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。

 

输入

 

输入四个整数:p, e, i 和d。 p, e, i 分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。d 是给定的时间,可能小于p, e, 或 i。 所有给定时间是非负的并且小于365, 所求的时间小于等于21252。

 

输出

 

从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。

 

 

当然,毕竟之前接触这方面的东西比较少,一开始只想到了 从公倍数的角度下手,但是不知道具体怎么操作。之后搜索,看到了中国剩余定理。贴下代码:

#include<iostream>
using namespace std;
int p, e, i, d, sum = 1;
int Val(int a, int b, int c) {
	int num;
	for (num = b * c;; num += b * c)
		if (num % a == 1)
			break;
	return num;
}
int main() {
	while (cin >> p >> e >> i >> d) {
		if (p == -1 && e == -1 && i == -1 && d == -1)
			break;
		int res = (p * Val(23, 28, 33) + e * Val(28, 23, 33)
				+ i * Val(33, 23, 28)) % 21252 - d;
		if (res <= 0)
			res += 21252;
		cout << "Case " << sum++ << ": the next triple peak occurs in " << res
				<< " days." << endl;
	}
	return 0;
}

 这只是了解 中国剩余定理的契机,接下来再来进一步了解。

 

到底什么是中国剩余定理,用个小例子。(也叫孙子定理)

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?——《孙子算经》

 这里的意思就是 x==2 mod 3==3 mod 5==2 mod 7

求出x。

根据定理的解法。

x1==1 mod 3==0 mod 5==0 mod 7

x2==0 mod 3==1 mod 5==0 mod 7
x3==0 mod 3==0 mod 5==1 mod 7
这个运算过程在上面的题里就反应在Val();方法里。

而最后的解x=2*x1+3*x2+2*x3.

似乎如果只简单的说说中国剩余定理,就这样了

0
1
分享到:
评论

相关推荐

    ACM—— OJ题目分类查询

    OJ题目分类查询,方便参加ACM的同学做题哦

    OJ习题.zip

    《OJ习题.zip》是一个包含了多个编程题目和相关知识点的压缩包,主要涉及C/C++编程语言的基础和进阶概念。以下是对每个文件名称所对应的知识点的详细解释: 1. **结构体、共用体和枚举** 结构体是C/C++中一种复合...

    hustoj - 流行的OJ系统,跨平台、易安装、有题库

    【标题】"hustoj" 是一款流行的在线判题系统(Online Judge,简称OJ),它主要用于教育和考试场景,支持教学管理和编程竞赛。这款系统以其跨平台、易安装和包含题库的特点受到广泛欢迎。 【核心知识点】 1. **在线...

    郑州轻工业oj;C语言200道题压缩包

    郑州轻工业oj;C语言200道题压缩包;郑州轻工业oj;C语言200道题压缩包;郑州轻工业oj;C语言200道题压缩包;郑州轻工业oj;C语言200道题压缩包;郑州轻工业oj;C语言200道题压缩包;郑州轻工业oj;C语言200道题压缩包;...

    OJ平台hustoj

    【OJ平台hustoj】是一个在线编程竞赛(Online Judge)平台的开源实现,它允许用户提交代码并自动运行测试,以验证程序的正确性。这个平台对于教学、技术比赛和编程训练非常有用,帮助学生和程序员提升编程技能。本文...

    离线本地oj练习系统

    离线本地oj(Online Judge)练习系统是一种专为编程初学者设计的自我学习工具,它允许用户在没有网络连接的情况下进行编程练习。这样的系统通常包含了大量编程题目,涵盖各种算法和数据结构,帮助用户提高编程技能和...

    蓝桥杯题库OJ导入

    "蓝桥杯题库OJ导入"是一个专为参与"蓝桥杯"全国软件和信息技术专业人才大赛的师生设计的在线编程练习与测试系统。这个系统的主要目标是帮助参赛者熟悉比赛中的题型和解题策略,从而提高他们的编程能力和竞赛水平。 ...

    DnuiOJ_oj题库_大连东软信息学院_打包文件_大连东软oj_DnuiOJ_

    【标题】"DnuiOJ_oj题库_大连东软信息学院_打包文件_大连东软oj_DnuiOJ_"所提及的是一个针对大连东软信息学院的在线编程竞赛(Online Judge,简称OJ)题库的压缩包。这个资源包含了学院内部用于教学和竞赛的编程题目...

    OJ系统汇总-2021-10-6(C)-32页.pdf

    * MOOC课程——程序设计与算法:是一个提供了大量的算法和数据结构的题目的OJ系统。 * LOJ:是一个提供了大量的算法和数据结构的题目的OJ系统。 * HustOJ:是一个提供了大量的算法和数据结构的题目的OJ系统。 * 牛客...

    hdoj.rar_HDOJ _OJ_oj_如何卡oj

    【标题】"hdoj.rar_HDOJ _OJ_oj_如何卡oj" 提供的信息主要涉及到两个关键概念:HDOJ(杭州电子科技大学在线评测系统)和OJ(Online Judge),以及“如何卡oj”的技巧。首先,让我们详细了解这两个核心概念。 OJ(On...

    宝塔系统安装HUSTOJ指南v0.21

    《宝塔系统安装HUSTOJ指南v0.21》 在信息技术领域,搭建在线编程竞赛平台(如HUSTOJ)对于教学和实践有着重要作用。本文将详细阐述如何在宝塔系统上安装和配置HUSTOJ,以便用户能够高效地运行和管理这个系统。 ...

    聚石塔OJ_oj_oj题库_聚石塔_聚石塔oj_聚石塔题库_

    《聚石塔OJ题库解析与探讨》 在编程竞赛和在线判题系统中,"OJ"(Online Judge)是一种广泛使用的平台,它允许程序员提交代码并立即获得运行结果和性能评估。聚石塔OJ是这样一个专门用于算法竞赛和训练的平台,其...

    八中oj代码

    【八中oj代码】指的是来自北京八中(Beijing No.8 High School)在线判题系统(Online Judge,简称OJ)的编程题目代码。在这个压缩包中,可能包含了学生们在参加编程竞赛或课程时提交的各类编程题目解决方案,主要以...

    在线精选OJ介绍

    4. vijos:中国台湾地区的OJ,题目涵盖广泛。 5. tyvj:天梯网,中国的一个在线编程竞赛平台。 6. USACO:美国中学生的信息学竞赛官方网站,提供全面的训练题目。 7. SGU:圣彼得堡国立信息技术机械与光学大学的OJ,...

    用python开发的本地OJ练习系统(附几道练习题)

    【标题】: "用Python开发的本地OJ练习系统(附几道练习题)" 这个项目是一个基于Python构建的本地在线编程练习环境,也被称为Online Judge(OJ)系统。通常,OJ系统用于帮助程序员练习和测试他们的编程技能,特别是...

    OJ系统蓝桥杯题库

    OJ系统的蓝桥杯题库,http://oj.xpuca.top/,这里有这些题的栗子。

    OJ数据生成计划.zip

    "OJ数据生成计划"是一个针对在线判题(Online Judge,简称OJ)系统的数据生成方案。OJ系统是编程竞赛或教育环境中常用的平台,它能够自动评测参赛者提交的程序代码,根据预设的测试数据判断代码的正确性。本计划的...

    南信大OJ部分题目答案

    南信大OJ部分题目答案

    华为oj编美象棋将帅

    在华为的在线编程训练平台OJ(Online Judge)上,有一类高级题目是关于象棋游戏的算法实现,其中“华为oj编美象棋将帅”是一个典型的编程挑战。这个题目要求开发者用Java语言来编写程序,模拟中国象棋中的将(帅)的...

    华为OJ题目集合

    【华为OJ题目集合】是华为在线判题(Online Judge,简称OJ)系统的一份题目合集,主要面向编程爱好者和求职者,提供了一系列的编程挑战,旨在提升编程技能和解决问题的能力。这个集合可能包含了C和C++两种语言的解题...

Global site tag (gtag.js) - Google Analytics