【NOIP2020普及组复赛】题4:儒略日

CSP - S 2020 T1 儒略日 题目链接 大力模拟题 由于我太菜了,考试的时候直接硬生生的从公元前4713年到公园1583年的每一天都给递推出来了,大概有 2⋅1062 \cdot 10^62⋅106 天。如果超出了范围就取个模,再特判几下就完事了 结果竟然40min内过了大样例/jk #include<cstdio> #include<iostream> #include<algorithm> using namespace std; const long long Maxn=3600000+10; 阅读详情

题4:儒略日

【题目描述】

为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。所谓儒略日,其定义为从公元前 4713 年 1 月 1 日正午 12 点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将被均匀的映射到数轴上,从而得以很方便的计算它们的差值。

现在,给定一个不含小数部分的儒略日,请你帮忙计算出该儒略日(一定是某一天的中午 12 点)所对应的公历日期。

我们现行的公历为格里高利历(Gregorian calendar),它是在公元 1582 年由教皇格里高利十三世在原有的儒略历(Julian calendar)的基础上修改得到的(注:儒略历与儒略日并无直接关系)。具体而言,现行的公历日期按照以下规则计算:

  1. 公元 1582 年 10 月 15 日(含)以后:适用格里高利历,每年一月 31 天、二月 28 天或 29 天、三月 31 天、四月 30 天、五月 31 天、六月 30 天、七月 31 天、八月 31 天、九月 30 天、十月 31 天、十一月 30 天、十二月 31天。其中,闰年的二月为 29 天,平年为 28 天。当年份是 400 的倍数,或日期年份是 4 的倍数但不是 100 的倍数时,该年为闰年。

  2. 公元 1582 年 10 月 5 日(含)至 10 月 14 日(含):不存在,这些日期被删除,该年 10 月 4 日之后为 10 月 15 日。

  3. 公元 1582 年 10 月 4 日(含)以前:适用儒略历,每月天数与格里高利历相同,但只要年份是 4 的倍数就是闰年。

  4. 尽管儒略历于公元前 45 年才开始实行,且初期经过若干次调整,但今天人类习惯于按照儒略历最终的规则反推一切 1582 年 10 月 4 日之前的时间。

注意,公元零年并不存在,即公元前 1 年的下一年是公元 1 年。因此公元前 1 年、前 5 年、前 9 年、前 13 年……以此类推的年份应视为闰年。

【输入文件】

第一行一个整数 Q,表示询问的组数。

接下来 Q 行,每行一个非负整数 rir_iri​,表示一个儒略日。

【输出文件】

对于每一个儒略日 rir_iri​,输出一行表示日期的字符串 sis_isi​。共计 Q 行。

sis_isi​ 的格式如下:

  1. 若年份为公元后,输出格式为 Day Month Year。其中日(Day)、月(Month)、年(Year)均不含前导零,中间用一个空格隔开。例如:公元2020 年 11 月 7 日正午 12 点,输出为 7 11 2020。

  2. 若年份为公元前,输出格式为 Day Month Year BC。其中年(Year)输出该年份的数值,其余与公元后相同。例如:公元前 841 年 2 月 1 日正午 12点,输出为 1 2 841 BC。

【输入样例1】

3
10
100
1000

【输出样例1】

11 1 4713 BC
10 4 4713 BC
27 9 4711 BC

【输入样例2】

3
2000000
3000000
4000000

【输出样例2】

14 9 763
15 8 3501
12 7 6239

【数据规模】

在这里插入图片描述

【代码如下】:

#include<bits/stdc++.h>
typedef long long ll;
const int N=146097;
int T,y[N],m[N],d[N];
ll n,t;
inline int md(int y,int m){
    if(m==2)return y%4?28:y%100?29:y%400?28:29;
    return m==4||m==6||m==9||m==11?30:31;
}
int main(){
    m[0]=d[0]=1;
    for(int i=1;i<N;++i){
        d[i]=d[i-1]+1;m[i]=m[i-1];y[i]=y[i-1];
        if(d[i]>md(y[i],m[i]))++m[i],d[i]=1;
        if(m[i]>12)++y[i],m[i]=1;
    }
    scanf("%d",&T);
    while(T--){
        scanf("%lld",&n);
        if(n>2299160){
            n-=2159351;
            t=n/N*400+1200;
            n%=N;
        }else{
            t=n/1461*4-4712;
            n%=1461;
        }
        if(t+y[n]>0)printf("%d %d %lld\n",d[n],m[n],t+y[n]);
        else printf("%d %d %lld BC\n",d[n],m[n],1-t-y[n]);
    }
}
CSP-J复赛复习题目(NOIP普及组2000-2011) CSP-J复赛复习题目(NOIP普及组2000-2011) NOIP普及组复赛(某个不存在的比赛)2000-2011年的题面和样例 可以用来复习CSP-J 建议去OJ上查看并提交 祝大家CSP RP++ 文章目录CSP-J复赛复习题目(NOIP普及组2000-2011)【00NOIP普及组】计算器的改良(noip001.pas)【题目描述】【输入】【输出】【输入样例】【输出样例】【00NOIP... 阅读详情

相关推荐

NOIP2016普及组复赛解题报告

NOIP2016普及组解题报告

leizhehan的博客:(你可能会认得我的另一个名字:hsfzLZH1) 1万+

csp-s2020 儒略日(含源代码)

题解

ljn081117的博客 1479

NOIP2016普及组复赛第一题ACC程序加题解pascal———买铅笔

NOIP2016普及组复赛第一题ACC程序加题解pascal 第一题:    题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。 商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。 现在P老师想知道,在商

这是一个很懒(handsome)的人,所以什么也没有留下 3414

1133 儒略日

【代码】1133 儒略日。

Yangzx_c的博客 438

NOIP1995普及组复赛第1题:

题目描述:设有下列的算式:

周转 &&& 周转 2135

NOIP复赛中低级错误排行榜

随着光棍节的到来,dama们在各大购物网站——淘宝、天猫、京东……进行了激烈的扫荡,同时dalao们也在恶心的NOIP2017普及组复赛的考场上七进七出,水题无数。        这次复赛中,第一题(成绩)秉承了NOIP2016第一题(铅笔)简单粗暴的品格【是啊是啊!连if语句都不用啦!】,简单程度再创历史新高,而(最后一题跳房子)则是烧脑到爆炸【不信?二分+动态规划+单调队列优化,你试试】。

The most secret blogs 5323

CSP-J (NOIP普及组) 历年复赛真题考察内容(1998~2021)

TZOJ题目分类 本博客原文地址:https://www.cnblogs.com/BobHuang/p/14522022.html 其中,1.较简单题25题左右;2.动态规划17题,其中9题较好做;3.模拟(阅读题目将问题抽象建模写出程序)为11题;4.搜索8题,大部分不会做的题目均可以用搜索获得步骤分;5.贪心8题,部分不好想;6.高精度5题。 1.CSP-J 2020 T1 优秀的拆分 位运算、进制转换 T2 直播获奖 桶排序 T3 表达式 栈、深搜 T4 方格取数 动态规划(高级) 2.CSP-J 2

BobHuang的博客 1万+

[NHZXOI2017]2016NOIP普及组复赛题解

用了两天的中午时间做了一套今年的普及组复赛试题结果测出来分数只有两百!(第三题洛谷全过,lemon却显示编译错误,奇了怪了) 第一题  买铅笔 题目来源:洛谷P1909 考查知识点:数学 解题思路:把每个产品买够n支笔时的钱算出来,选取最小的。 代码: #include #include using namespace std; char ch; int getnum() { ch

qq_32279589的博客 1647

近年NOIP普及组复赛题目的简单讲解

NOIP2015普及组复赛 整套题都出得不错,难度适中,层次分明 建议同学们在做题的时候还是先在草稿纸上分析,把关键算法的伪代码写出来,然后设计数据进行静态查错,没有问题后再到电脑上敲出代码。实际效率会高一些,也不容易出错,除非是你对这道题太熟悉了,不需要分析就可以过的可以例外(当然每个人还是根据自己的具体情况而定,只是建议尝试一下)。 第一题 金币 感觉这道题出得不错,普及组第一题就...

flymist的博客 9372

2020 CSP-S2 提高级第二轮试题( 原noip提高组复赛)

2020 年 CCF 非专业级软件能力认证 提高级第二轮 为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。所谓儒 略日,其定义为从公元前 4713 年 1 月 1 日正午 12 点到此后某一时刻间所经过 的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将 被均匀的映射到数轴上,从而得以很方便的计算它们的差值。 现在,给定一个不含小数部分的儒略日,请你帮忙计算出该儒略日(一定 是某一天的中午 12 点)所对应的公历日期。 我们现行的公历为格里高利历(Gregorian calendar),它是在公元 1582 年 由教皇格里 2020 CCF CSP-S2

CSP-S (NOIP提高组) 历年复赛真题考察内容(1999~2020).pdf

CSP-S (NOIP提高组) 历年复赛真题考察内容(1999~2020).pdf

NOIP 普及组 复赛 试题 目录 信奥 历年

姐妹篇详见https://blog.youkuaiyun.com/mrcrack/article/details/86620012 NOIP  普及组  复赛  试题  目录   信奥  历年 NOIP  2018 普及组  复赛  试题  目录 1.标题统计  title 2.龙虎斗  fight 3.摆渡车  bus 4.对称二叉树  tree NOIP  2017 普及组  复赛  试题 ...

mrcrack的博客 3311

儒略日与公历转换(C++/Python).rar

详细描述:https://blog.youkuaiyun.com/weixin_42763614/article/details/82880007

NOIP2018普及组复赛试题第4题解析

NOIP2018普及组复赛试题第4题解析 第4题:对称二叉树 题目描述 一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树: 二叉树; 将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等。 下图中节点内的数字为权值,节点外的 id表示节点编号。 现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且节点数 最多。请输出这棵子树的节点数。 注意:只有树根的树也...

Sagittarius_fjz的博客 716

CSP-S2020儒略日题解[代码]

本文详细解析了CSP-S2020中的儒略日题目,介绍了儒略日的定义及其在天文学中的应用。题目要求根据给定的儒略日计算出对应的公历日期,并详细说明了格里高利历和儒略历的转换规则。文章提供了完整的解题思路和代码实现,包括年份转换函数、二分查找确定年份、以及计算剩余天数的方法。代码部分展示了如何处理闰年、1582年10月的特殊情况,并最终输出正确的日期格式。通过本文,读者可以深入理解儒略日与公历日期的转换逻辑,并掌握相关的编程技巧。

QGIS v3.28 高效加载OSM在线地图的三种实用方法

本文详细介绍了在QGIS v3.28中高效加载OSM在线地图的三种实用方法:通过XYZ Tiles直接连接、使用QuickMapServices插件以及配置WMS/WTMS服务。针对每种方法提供了具体操作步骤、常见问题解决方案和性能优化建议,帮助用户根据需求选择最适合的方案,提升GIS工作效率。

weixin_29233333的博客 432

2020年CSP-J2 CSP-S2 复赛题解

2020年CSP-J2 CSP-S2 复赛题解

青少年趣味编程 3854

OnePlus线刷救砖与OTA全量包:从故障恢复到系统升级的完整指南

本文详细介绍了OnePlus手机线刷救砖与OTA全量包的完整操作指南,包括故障诊断、线刷救砖实战教程、OTA全量包升级优势及进阶玩法。通过具体案例和实用技巧,帮助用户从系统故障恢复到安全升级,特别适合Android系统爱好者和OnePlus用户。

weixin_30338481的博客 615

【NOIP-普及组-复赛】(2)NOIP2011普及组复赛题解

这只是一个作业,如果有帮到您的,我只能说。。。这不科学。。。 ————————————华丽的分割线———————————— 第一题: 很有趣的一道题。。。经典做法是字符串读入去头尾0记符号然后乱搞。。。不过我又机智的发明了膜(模)法。。。 下面是代码(主程序巨短)#include <cstdio> #include <cstdlib> #include <cmath> #includ

最开始这里是为了写作业而诞生的qwq 3216

【COMSOL】修改内置物理场方程 模拟水沸腾的蒸汽泡运动

在COMSOL中通过弱贡献(weak contribution)节点,可以向任何内置模型方程中添加约束。这里,以模拟水沸腾的蒸汽泡运动为例,来讲一讲当我们研究的方程与模块方程不一样时,应该怎么增加新的贡献项。

u012161192的博客 9005

GPU服务器维修全流程:从检测到解锁

《GPU服务器维修维保全流程指南》摘要:本文系统介绍GPU服务器从检测到解锁的完整维修流程。检测环节包含物理检查(氧化层、散热、PCB板)和电子诊断(ECC报错率、电源波动等);核心维修技术涵盖PCB板修复(微孔镀铜、BGA返修)和芯片级维修(成功率78-92%);解锁验证阶段包括性能解锁(VBIOS重写)和72小时稳定性测试。文末提供故障速查表及维保建议,强调定期除尘可降低38%故障率,推荐环境粉尘浓度控制在≤0.3mg/m³。

2401_89353317的博客 889

【NOIP-普及组-复赛】(1)NOIP2010普及组复赛题解

这只是一个作业,如果有帮到您的,我只能说。。。这不科学。。。 ————————————华丽的分割线———————————— 第一题: 俗话说第一题都是送分的,这题也是。直接暴力就过了,可是本蒻脑洞大开异想天开忘记次药稀里糊涂想都不想就写了个数论。。。 100分做法(暴力) 从起点到终点每个数每位搜一遍累加。。。。。。。 代码(洛谷AC过):#include <cstdio> #inc

最开始这里是为了写作业而诞生的qwq 2724

【QT开发教程】Qt中的数据加密与解密

在现代应用程序中,数据加密与解密是保护敏感信息的重要手段。Qt本身并不直接提供数据加密与解密的支持,但可以使用第三方库,如OpenSSL或Crypto++,来实现这一功能。本文将介绍如何在Qt中使用OpenSSL进行数据加密与解密,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1152
上一篇: 【NOIP2020普及组复赛】题3:方格取数
下一篇: 【NOIP2021普及组复赛】题1:分糖果(candy)
lpstudio
博客等级 码龄16年 1266粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lpstudio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值