社区讨论
蒟蒻求修儒略历,不知道错哪了(知道一定会超时,但不知道为什么WA)
灌水区参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo27iue8
- 此快照首次捕获于
- 2023/10/23 09:16 2 年前
- 此快照最后确认于
- 2023/11/03 09:31 2 年前
CPP
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
ll ti,ans;
int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool f1=false,f2=false;
ll day,month,year;
bool judge(int m,bool f)
{
if(m<0) m++;
if(!f && m%4==0){return true;}
else {
if(m%4==0 && m%100!=0){ return true; }
if(m%400==0) {return true;}
}
return false;
}
void print()
{
cout<<day<<" "<<month<<" "<<fabs(year);
if(year<0) cout<<" "<<"BC";
cout<<endl;
}
void calc1(){
int k=0;
day=1,month=1,year=-4713;
while(1)
{
k=ti;
f1=false;
ti-=365;
year++;
if(ti<0) break;
if(year==0) year++;
f1=judge(year,false);
if(f1) ti--;
}
year--;
f1=judge(year,false);
int p=0;
if(f1) a[2]=29;
for(int i=1; i<=12; i++){
p=k;
month++;
if(k==a[i]) break;
k-=a[i];
if(k<0) break;
}
a[2]=28;
month--;
day+=p-1;
if(year==-4713) day++;
print();
return ;
}
void calc2(){
int day=15,month=10,year=1582;
if(ti<17)
{
day+=ti;
cout<<day<<" "<<month<<" "<<year<<endl;
return ;
}
ti-=17;
month++;
if(ti<a[11])
{
day+=ti;
cout<<day<<" "<<month<<" "<<year<<endl;
return ;
}
month++;
ti-=a[11];
if(ti<a[12])
{
day+=ti;
cout<<day<<" "<<month<<" "<<year<<endl;
return ;
}
ti-=a[12];
month=1;
day=1;
year++;
int k=0;
while(1)
{
k=ti;
f2=false;
ti-=365;
year++;
if(ti<0) break;
f2=judge(year,true);
if(f2) ti--;
}
year--;
f2=judge(year,false);
int p=0;
if(f2) a[2]=28;
for(int i=1; i<=12; i++){
p=k;
month++;
if(k==a[i]) break;
k-=a[i];
if(k<0) break;
}
a[2]=29;
month--;
day+=p;
if(year==1582) day--;
cout<<day-1<<" "<<month<<" "<<year<<endl;
}
int main()
{
//freopen("julian.in","r",stdin);
//freopen("juliam.out","w",stdout);
int T=1000000000;
//cin>>T;
while(T--){
ti=T;
if(ti<=2299160){
calc1();
}
else {
ti-=2299160;
calc2();
}
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...