Untitled
user_0483151
plain_text
a year ago
3.0 kB
20
Indexable
#include <bits/stdc++.h>
#define endl '\n'
#define maxn 1005
#define TASK bai1
#define For(i,a,b) for ( int i = a; i <= b; i++ )
#define Ford(i,a,b) for ( int i = a; i >= b; i-- )
#define MOD 10000000
using namespace std;
int d,m,y,yl,kq[400],aa[200], bb[200], cc[200] ,ma,sa,sb,sc;
int A[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} ;
int B[13] = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} ;
bool Nhuan(int x) {
if ( x % 400 == 0 ) return true ;
if ( x % 4 == 0 && x % 100 != 0 ) return true;
return false ;
}
long long DayK(int x,int y) {
long long t = 0;
For(i,x,y)
if ( Nhuan(i) ) t += 366;
else t += 365 ;
return t;
}
long long Day(int a,int b, int c, int n) {
long long t = DayK(a,n-1) ;
For(thang,1,c-1)
if ( Nhuan(n) ) t += B[thang] ;
else t += A[thang] ;
t += b;
return t ;
}
void Change(long long tong, int nam) {
int t = 0,x,y;
For(i,1,12) {
if ( Nhuan(nam) ) t += B[i] ;
else t += A[i] ;
if ( t >= tong ) {
y = i ;
if ( Nhuan(nam) ) t-= B[i];
else t -= A[i];
break ;
}
}
x = tong - t;
cout << x << " " << y << " " << nam ;
}
void inp() {
cin >> d >> m >> y >> yl ;
}
void solve() {
long long a = Day(y,1,1,yl) - Day(y,d,m,y) ;
long long b = DayK(y,yl-1) - Day(y,d,m,y) ;
int TL = ( a / 23 ) * 23 ;
int TT = ( a / 27 ) * 27 ;
int CX = ( a / 33 ) * 33 ;
if ( TL < a ) TL = TL + 23 - b;
if ( TT < a ) TT = TT + 27 - b;
if ( CX < a ) CX = CX + 33 - b;
if ( Nhuan(yl) ) ma = 366;
else ma = 365 ;
aa[1] = TL ; bb[1] = TT ; cc[1] = CX ;
For(i,2,300) {
aa[i] = aa[i-1] + 23;
if ( aa[i] > ma ) {
sa = i - 1;
break ;
}
}
For(i,2,300) {
bb[i] = bb[i-1] + 27;
if ( bb[i] > ma ) {
sb = i - 1;
break ;
}
}
For(i,2,300) {
cc[i] = cc[i-1] + 33;
if ( cc[i] > ma ) {
sc = i - 1;
break ;
}
}
int dem = 0;
For(i,1,sa) {
For(j,1,sb)
if ( aa[i] == bb[j] ) {
dem++;
kq[dem] = aa[i] ;
}
}
For(i,1,sb) {
For(j,1,sc)
if ( bb[i] == cc[j] ) {
dem++;
kq[dem] = bb[i] ;
}
}
For(i,1,sc) {
For(j,1,sa)
if ( cc[i] == aa[j] ) {
dem++;
kq[dem] = cc[i] ;
}
}
if ( dem == 0 ) cout << "Lucky." ;
else {
sort(kq+1,kq+1+dem) ;
For(i,1,dem)
if ( kq[i] != kq[i+1] ) {
Change(kq[i],yl) ;
cout << endl ;
}
}
}
int main()
{
ios_base:: sync_with_stdio(0);
cin.tie(0);
if(fopen("bai1.inp","r")){
freopen("bai1.inp","r",stdin);
}
inp();
solve();
}Editor is loading...
Leave a Comment