萌新求调儒略日
查看原帖
萌新求调儒略日
262344
任俊熹楼主2021/10/5 21:23

本蒟蒻只写了公元前的,但是它连样例都不对

//
//  main.cpp
//  P7075 [CSP-S2020] 儒略日
//
//  Created by Alan on 2021/10/5.
//

#include <bits/stdc++.h>
using namespace std;
#define register long long int
int _month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int __month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
bool flag=false;
inline bool is_Gregorian_Year(int year)
{
    if(year%400==0)
        return true;
    if(year%4==0)
        if(year%100!=0)
            return true;
    return true;
}
inline bool is_Julian_Year(int year,bool BC)
{
    if(BC) return (year-1)%4==0;
    else return year%4==0;
}
inline int BCCheckYear(int & day)
{
    int year=1;
    for(int i=4713;;i--)
    {
        year=i;
        if(is_Julian_Year(i, true))
        {
            day-=366;
            if(day<0)
            {
                day+=366;
                break;
            }
        }
        else
        {
            day-=365;
            if(day<0)
            {
                day+=365;
                return year;
            }
        }
        if(day==0)
        {
            cout<<"12 31 "<<year<<" BC"<<endl;
            flag=true;
            return 0;
        }
    }
    return year;
}
inline int BCCheckMonth(int & day,int year)
{
    int month=1;
    for(int i=1;i<=12;i++)
    {
        month=i;
        if(is_Julian_Year(year, true))
        {
            day-=_month[i];
            if(day<0)
            {
                day+=_month[i];
                break;
            }
            if(day==0)
            {
                cout<<_month[i]<<" "<<month<<" "<<year<<" BC"<<endl;
                flag=true;
                return 0;
            }
            else{;}

        }
        else
        {
            day-=__month[i];
            if(day<0)
            {
                day+=__month[i];
                break;
            }
            else{;}
            if(day==0)
            {
                cout<<__month[i]<<" "<<month<<" "<<year<<" BC"<<endl;
                flag=true;
                return 0;
            }
        }
    }
    return month;
}
inline void BCPrint(int nowday)
{
    int year=BCCheckYear(nowday);
    if(flag) return;
    int month=BCCheckMonth(nowday,year);
    if(flag) return;
    cout<<nowday<<" "<<month<<" "<<year<<" "<<"BC"<<endl;
    return;
}
inline void JulianPrint(int day)
{
    if(day<=1721424) BCPrint(day);
    if(flag) return;
}
inline void GregorianPrint(int day)
{
    ;
}
inline void PrintAns(int day)
{
    if(day<=1721424+577737)
        JulianPrint(day);
    if(flag) return;
    else  GregorianPrint(day);
}
signed main(int argc, const char * argv[]) {
    // insert code here...
    int n=0;int temp=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>temp;
        PrintAns(temp+1);
        flag=false;
    }
    return 0;
}

求DALAO指教

2021/10/5 21:23
加载中...