2020 CSP-S2 提高级第二轮试题( 原noip提高组复赛)
2020 年 CCF 非专业级软件能力认证 提高级第二轮 为了简便计算,天文学家们使用儒略日(Julian day)来表达时间。所谓儒 略日,其定义为从公元前 4713 年 1 月 1 日正午 12 点到此后某一时刻间所经过 的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将 被均匀的映射到数轴上,从而得以很方便的计算它们的差值。 现在,给定一个不含小数部分的儒略日,请你帮忙计算出该儒略日(一定 是某一天的中午 12 点)所对应的公历日期。 我们现行的公历为格里高利历(Gregorian calendar),它是在公元 1582 年 由教皇格里 2020 CCF CSP-S2 【知识点】 1. **儒略日 (Julian Day)**: 儒略日是一种天文学的时间单位,用于方便计算时间间隔。它从公元前4713年1月1日正午12点开始计数,直到现在为止的天数。儒略日不考虑小时、分钟和秒,只以天数表示,不足一天的部分用小数表示。 2. **格里高利历 (Gregorian Calendar)**: 格里高利历是目前国际上普遍采用的公历,由教皇格里高利十三世于1582年提出,主要目的是修正儒略历中的闰年计算误差。在格里高利历中,闰年的规则是:如果年份能被4整除但不能被100整除,或者能被400整除,那么这一年就是闰年。闰年的2月有29天,其他月份天数不变。 3. **闰年规则**: 闰年的计算规则在不同历史时期有所不同。在公元前45年开始实行的儒略历中,只要是4的倍数的年份就是闰年,而在格里高利历中,闰年的规则更为复杂,涉及到4、100和400这三个数字。 4. **日期转换算法**: 给定一个儒略日,需要将其转换为公历日期,这涉及到了从儒略日到格里高利历日期的转换公式,需要考虑公元前和公元后的差异,以及1582年10月的日期跳跃(即从10月4日直接跳到10月15日)。 5. **编程竞赛 (CCF CSP-S2)**: CCF CSP-S2是中国计算机学会举办的非专业级软件能力认证提高级第二轮比赛,要求参赛者编写程序解决特定问题。在这个例子中,参赛者需要编写一个程序,接收输入的儒略日,并输出对应的格里高利历日期。 6. **程序设计规范**: 在提交程序时,需要注意文件名、输入输出文件名、函数返回值类型、程序代码放置位置、内存限制和运行时间限制等细节。同时,程序运行环境和评测系统都是预设的,如Linux操作系统和特定的编译器版本。 7. **输入输出格式**:程序需要读取输入文件`julian.in`,包含一个整数表示询问的组数,以及相应数量的儒略日;输出文件`julian.out`则需要按照指定格式输出日期。对于每个儒略日,输出应该是"Day Month Year"的形式,不包含前导零。 8. **编程语言支持**: 比赛支持C++、C和Pascal三种编程语言,每种语言都有相应的编译选项,比如C++需要`-lm`选项链接数学库。 9. **样例测试**: 提供了Linux格式的附加样例文件,用于帮助参赛者测试程序的正确性。评测系统会进行全文比较,过滤行末空格和文末回车,确保输出的精确匹配。 在实际解决问题时,程序员需要理解儒略日和格里高利历之间的转换规则,编写程序进行计算,并处理闰年、公元前和公元后的特殊情况。同时,程序还需要满足比赛规定的输入输出格式和时间、空间限制。
剩余10页未读,继续阅读
- 粉丝: 451
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0