当前位置: 首页 > news >正文

2020CSPS T1 儒略日题解

这是一道超级大模拟

前后调了差不多3个小时,要是考场上那就已经炸了

题意其实很简单,但是处理起来是真的麻烦

最后写了份特别丑的代码,A过去了

主要是特例判的恶心,总是会有1月0日的错误

这题一定要耐住性子做下来试试

#include <bits/stdc++.h>
using namespace std;
const long long day = 365;
const long long bound = 2299161;
const long long bound2 = 1721424;
vector<long long> month(13);
vector<long long> month2(13);
int main() {ios::sync_with_stdio(false);cin.tie(nullptr); month2[1] = 31;month2[2] = month2[1] + 29;month2[3] = month2[2] + 31;month2[4] = month2[3] + 30;month2[5] = month2[4] + 31;month2[6] = month2[5] + 30;month2[7] = month2[6] + 31;month2[8] = month2[7] + 31;month2[9] = month2[8] + 30;month2[10] = month2[9] + 31;month2[11] = month2[10] + 30;month2[12] = month2[11] + 31;month[1] = 31;month[2] = month[1] + 28;month[3] = month[2] + 31;month[4] = month[3] + 30;month[5] = month[4] + 31;month[6] = month[5] + 30;month[7] = month[6] + 31;month[8] = month[7] + 31;month[9] = month[8] + 30;month[10] = month[9] + 31;month[11] = month[10] + 30;month[12] = month[11] + 31;long long BY = 3 * day + day + 1;long long Q;cin>>Q;long long r;while(Q--) {cin>>r;r += 1;if(r <= bound) {if(r <= bound2) {long long y = (r / BY) * 4;r %= BY;if(r == 0) {y--;r += 366;}if(r <= 366) {long long x = lower_bound(month2.begin() + 1, month2.end(), r) - month2.begin();long long d = r - month2[x - 1];cout<<d<<" "<<x<<" "<<4713 - y<<" "<<"BC"<<"\n";}else {r -= 366;y += 1;y += r / 365;r %= 365;if(r == 0) {y--;r += 365;}long long x = lower_bound(month.begin() + 1, month.end(), r) - month.begin();long long d = r - month[x - 1];cout<<d<<" "<<x<<" "<<4713 - y<<" "<<"BC"<<"\n";}}else {r -= bound2;int flag = 1;if(r == 0) flag = 0;long long y = (r / BY) * 4;r %= BY;if(r == 0 && flag == 1) {y--;r += 366;cout<<31<<" "<<12<<" "<<1 + y<<"\n";}else {y += r / 365;if(r / 365 == 3) {r %= 365;if(r == 0) {y--;cout<<31<<" "<<12<<" "<<1 + y<<"\n";}else {long long x = lower_bound(month2.begin() + 1, month2.end(), r) - month2.begin();long long d = r - month2[x - 1];cout<<d<<" "<<x<<" "<<1 + y<<"\n";}}else if(r / 365 == 4) {y--;r = 365;long long x = lower_bound(month2.begin() + 1, month2.end(), r) - month2.begin();long long d = r - month2[x - 1];cout<<d<<" "<<x<<" "<<1 + y<<"\n";}else {r %= 365;if(r == 0 && flag) {y--;cout<<31<<" "<<12<<" "<<1 + y<<"\n";}else {long long x = lower_bound(month.begin() + 1, month.end(), r) - month.begin();long long d = r - month[x - 1];cout<<d<<" "<<x<<" "<<1 + y<<"\n";}}}}}else {r -= bound;if(r <= 78) {r += month[9] + 4;r += 10;long long x = lower_bound(month.begin() + 1, month.end(), r) - month.begin();long long d = r - month[x - 1];cout<<d<<" "<<x<<" "<<1582<<"\n";}else {r -= 78;long long year = 1583;if(r <= 6575) {if(r <= 365) {long long x = lower_bound(month.begin() + 1, month.end(), r) - month.begin();long long d = r - month[x - 1];cout<<d<<" "<<x<<" "<<1583<<"\n";}else {r -= 365;long long y = (r / BY) * 4;r %= BY;if(r == 0) {y--;r += 366;}if(r <= 366) {long long x = lower_bound(month2.begin() + 1, month2.end(), r) - month2.begin();long long d = r - month2[x - 1];cout<<d<<" "<<x<<" "<<y + 1584<<"\n";}else {r -= 366;y += 1;y += r / 365;r %= 365;if(r == 0) {y--;r += 365;}long long x = lower_bound(month.begin() + 1, month.end(), r) - month.begin();long long d = r - month[x - 1];cout<<d<<" "<<x<<" "<<1584 + y<<"\n";}}}else {r -= 6575;long long YY = BY * 100 - 3;long long y = (r / YY) * 400;r %= YY;if(r == 0) {y--;r += 366;}else {long long YYY = BY * 25 - 1;y += (r / YYY) * 100;r %= YYY;if(r == 0) {y--;r += 365;}else {y += (r / BY) * 4;r %= BY;if(r == 0) {y--;r += 366;}else {y += r / 365;if(r / 365 == 4) {y--;r -= 365 * 3;}else {r %= 365;if(r == 0) {y--;r += 365;}}}}}if((1601 + y) % 4 == 0 && (1601 + y) % 100 != 0) {long long x = lower_bound(month2.begin() + 1, month2.end(), r) - month2.begin();long long d = r - month2[x - 1];cout<<d<<" "<<x<<" "<<y + 1601<<"\n";}else if((1601 + y) % 400 == 0) {long long x = lower_bound(month2.begin() + 1, month2.end(), r) - month2.begin();long long d = r - month2[x - 1];cout<<d<<" "<<x<<" "<<y + 1601<<"\n";}else {long long x = lower_bound(month.begin() + 1, month.end(), r) - month.begin();long long d = r - month[x - 1];cout<<d<<" "<<x<<" "<<y + 1601<<"\n";}}}}}return 0;
}
http://www.gsyq.cn/news/16496.html

相关文章:

  • Python 语言编程技巧
  • kafka 常用知识点 - 指南
  • 英语_阅读_ChatGPT_待读
  • 详细介绍:Qwen2.5-VL 损失函数
  • visual studio
  • HttpServletResponse 对象用来做什么? - 详解
  • [LUCKY」在Windows下使用STUN穿透实现Minecraft联机并设置SRV记录
  • 详细介绍:如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)
  • Go 为何天生适合云原生? - 指南
  • ARC 207
  • 深入解析:C++:内存管理
  • [KaibaMath1001] 关于∀ε0,|a-b|ε = a=b的证明
  • 基于Web的分布式图集管理系统架构设计与实践 - 教程
  • 国庆 Day2 强基物理
  • unix/linux source 命令,其发展历程详细时间线、由来、历史背景 - 指南
  • AtCoder Regular Contest 207 (Div.1) 游记
  • 详细介绍:云原生时代 Kafka 深度实践:05性能调优与场景实战
  • 从零开始学Flink:数据输出的终极指南
  • 自然语言处理(NLP)的系统学习路径规划 - 实践
  • 【JNI】JNI基础语法
  • 从Chrome渲染器代码执行到内核:MSG_OOB漏洞分析与利用
  • US$78.85 KEYDIY KD ZB42-4 Universal Smart Remote Key 3+1 Buttons for Lexus Type 5pcs/lot
  • Python中小整数对象池、intern机制和大整数对象池
  • ctf逆向常见算法----base64
  • 02020409 EF Core基础09-一对一、多对多、EF Core基于关系的复杂查询
  • 02020503 EF Core高级03-分页查询、IQuerable底层的实现形式、DataReader、DataTable、EF Core中的异步方法
  • P2831 [NOIP 2016 提高组] 愤怒的小鸟 题解
  • MariaDB收购SkySQL增强AI与无服务器能力
  • 阿里云为何,一个邮箱绑定了两个账号 - 教程
  • 深入解析:【设计模式-3.5】结构型——装饰器模式