#include <iostream>
#include <iomanip>
using namespace std;
long JDay( int year, int month, int day) {
if ( month <= 2 ) {
year-- ;
month + = 12 ;
} ;
unsigned long J;
int A = year / 100 ;
A = 2 - A + ( A / 4 ) ;
J = 1461L * long ( year) ;
J / = 4L ;
unsigned long K = 306001L * long ( month + 1 ) ;
K / = 10000L ;
J + = K + day + 1720995L + A;
return J;
}
void GDate( long JD, int & y, int & m, int & d) {
unsigned long A = ( JD * 4L - 7468865L ) / 146097L ;
A = ( JD > 2299160 ) ? JD + 1 + A - ( A / 4L ) : JD;
long B = A + 1524 ;
long C = ( B * 20L - 2442L ) / 7305L ;
long D = ( C * 1461L ) / 4L ;
long E = ( 10000L * ( B - D) ) / 306001L ;
d = int ( B - D - ( ( E * 306001L ) / 10000L ) ) ;
m = int ( ( E <= 13 ) ? E - 1 : E - 13 ) ;
y = int ( C - ( ( m > 2 ) ? 4716 : 4715 ) ) ;
}
int main( ) {
int day, month, year;
cout << "Введите день, месяц, год: " ;
cin >> day >> month >> year;
cout
<< setfill( '0' ) << "Ваша дата: " << setw( 2 ) << day << "."
<< setw( 2 ) << month << "." << year << endl;
long jd = JDay( year, month, day) ;
for ( int m = 1 ; m <= 1000 ; m * = 10 ) {
cout << "Дата через " << m << " дней: " ;
GDate( jd + m, year, month, day) ;
cout << setw( 2 ) << day << "." << setw( 2 ) << month << "." << year <<
endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxvbmcgSkRheShpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KSB7CiAgICBpZiAobW9udGggPD0gMikgewogICAgICAgIHllYXItLTsKICAgICAgICBtb250aCArPSAxMjsKICAgICAgICB9OwogICAgdW5zaWduZWQgbG9uZyBKOwogICAgaW50IEEgPSB5ZWFyIC8gMTAwOwogICAgQSA9IDIgLSBBICsgKEEgLyA0KTsKICAgIEogPSAxNDYxTCAqIGxvbmcoeWVhcik7CiAgICBKIC89IDRMOwogICAgdW5zaWduZWQgbG9uZyBLID0gMzA2MDAxTCAqIGxvbmcobW9udGggKyAxKTsKICAgIEsgLz0gMTAwMDBMOwogICAgSiArPSBLICsgZGF5ICsgMTcyMDk5NUwgKyBBOwogICAgcmV0dXJuIEo7CiAgICB9Cgp2b2lkIEdEYXRlKGxvbmcgSkQsIGludCYgeSwgaW50JiBtLCBpbnQmIGQpIHsKICAgIHVuc2lnbmVkIGxvbmcgQSA9IChKRCAqIDRMIC0gNzQ2ODg2NUwpIC8gMTQ2MDk3TDsKICAgIEEgPSAoSkQgPiAyMjk5MTYwKSA/IEpEICsgMSArIEEgLSAoQSAvIDRMKSA6IEpEOwogICAgbG9uZyBCID0gQSArIDE1MjQ7CiAgICBsb25nIEMgPSAoQiAqIDIwTCAtIDI0NDJMKSAvIDczMDVMOwogICAgbG9uZyBEID0gKEMgKiAxNDYxTCkgLyA0TDsKICAgIGxvbmcgRSA9ICgxMDAwMEwgKiAoQiAtIEQpKSAvIDMwNjAwMUw7CiAgICBkID0gaW50KEIgLSBEIC0gKChFICogMzA2MDAxTCkgLyAxMDAwMEwpKTsKICAgIG0gPSBpbnQoKEUgPD0gMTMpID8gRSAtIDEgOiBFIC0gMTMpOwogICAgeSA9IGludChDIC0gKChtID4gMikgPyA0NzE2IDogNDcxNSkpOwogICAgfQoKaW50IG1haW4oKSB7CiAgICBpbnQgZGF5LCBtb250aCwgeWVhcjsKICAgIGNvdXQgPDwgItCS0LLQtdC00LjRgtC1INC00LXQvdGMLCDQvNC10YHRj9GGLCDQs9C+0LQ6ICI7CiAgICBjaW4gPj4gZGF5ID4+IG1vbnRoID4+IHllYXI7CiAgICBjb3V0CiAgICAgICAgICAgIDw8IHNldGZpbGwoJzAnKSA8PCAi0JLQsNGI0LAg0LTQsNGC0LA6ICIgPDwgc2V0dygyKSA8PCBkYXkgPDwgIi4iCiAgICAgICAgICAgIDw8IHNldHcoMikgPDwgbW9udGggPDwgIi4iIDw8IHllYXIgPDwgZW5kbDsKICAgIGxvbmcgamQgPSBKRGF5KHllYXIsIG1vbnRoLCBkYXkpOwoKICAgIGZvciAoaW50IG0gPSAxOyBtIDw9IDEwMDA7IG0gKj0gMTApIHsKICAgICAgICBjb3V0IDw8ICLQlNCw0YLQsCDRh9C10YDQtdC3ICIgPDwgbSA8PCAiINC00L3QtdC5OiAiOwogICAgICAgIEdEYXRlKGpkICsgbSwgeWVhciwgbW9udGgsIGRheSk7CiAgICAgICAgY291dCA8PCBzZXR3KDIpIDw8IGRheSA8PCAiLiIgPDwgc2V0dygyKSA8PCBtb250aCA8PCAiLiIgPDwgeWVhciA8PAogICAgICAgICAgICAgZW5kbDsKICAgICAgICB9CiAgICB9Cg==