#include iostreamtypedef long long LL;const int D = 3146100;using namespace std;int T = 146097;int T1 = 3000000;int daysDmonDyearD;const int months13 = 0 31 28 31 30 31 30 31 31 30 31 30 31 ;bool is
package main
import "fmt"
const ( D int = 3146100 T int = 146097 T1 int = 3000000 )
var ( days [D]int mon [D]int year [D]int months [13]int = [13]int{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} )
func isLeapYear(y int) bool { if y < 0 { return y % 4 == -1 } if y >= 1 && y <= 1582 { return y % 4 == 0 } return y%400 == 0 || (y%4 == 0 && y%100 != 0) }
func getDays(y, m int) int { if m == 2 { return months[m] + boolToInt(isLeapYear(y)) } return months[m] }
func boolToInt(b bool) int { if b { return 1 } return 0 }
func predeal() { d, m, y := 1, 1, -4713 r := T + T1 for k := 0; k <= r; k++ { days[k] = d mon[k] = m year[k] = y if d == 4 && m == 10 && y == 1582 { d = 15 } else if getDays(y, m) == d { d = 1 if m == 12 { m = 1 y++ if y == 0 { y++ } } else { m++ } } else { d++ } } }
func main() { predeal() var q int fmt.Scan(&q) for q > 0 { var r int64 fmt.Scan(&r) if r <= T+T1 { if year[r] < 0 { fmt.Printf("%d %d %d BC\n", days[r], mon[r], -year[r]) } else { fmt.Printf("%d %d %d\n", days[r], mon[r], year[r]) } } else { target := T1 + int((r-T1)%int64(T)) fmt.Printf("%d %d %d\n", days[target], mon[target], year[target]+int((r-T1)/int64(T))*400) } q-- }
原文地址: https://www.cveoy.top/t/topic/hWTk 著作权归作者所有。请勿转载和采集!