129 条题解
-
2
猫粮寸断 LV 10 @ 7 年前
此题不存在BUG
那些一开始想的百年不闰的,注意一下四百年再闰 -
18 年前@
-
04 年前@
-
07 年前@
#include <iostream>
#include <cstdio>using namespace std;
int y,m,d;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int main()
{cin>>y>>m>>d;
for (int i=1;i<=10000;i++)
{
if (y%4==0)
day[2]=29;
else day[2]=28;
d++;
if (d>day[m])
m++,d=1;
if (m==13)
m=1,y++;
}
cout<<y<<"-"<<m<<"-"<<d<<endl;
return 0;
} -
07 年前@
#include<iostream>
#include<cmath>
using namespace std;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int a,b,c;
cin>>a>>b>>c;
for (int i=1;i<=10000;i++)
{
c++;
if ((a%4==0&&a%100!=0)||a%400==0)
{
m[2]=29;
if (m[b]<c)
{
b++;
c=1;
if (b==13)
{
a++;
b=1;
}
}
m[2]=28;
}
else
{
if (m[b]<c)
{
b++;
c=1;
if (b==13)
{
a++;
b=1;
}
}
}
}
cout<<a<<"-"<<b<<"-"<<c;
return 0;
} -
07 年前@
八年以后再来看,用 Python 多简单。
import datetime
data = list(map(int, input().strip().split(' ')))
date = datetime.date(year=data[0], month=data[1], day=data[2])
date += datetime.timedelta(days=10000)
print(date.strftime('%Y-%-m-%-d')) -
07 年前@
program huiwen;
var
month, ans, a, b, y, code, d, q, w, e: longint;
str1, str2, stry, strm, strd, year, s, s1, s2: string;begin
readln(q, w, e);
ans := 0;
str(q, stry);
str(w, strm);
if length(strm) = 1 then
begin
strm := '0' + strm[1];
end;
str(e, strd);
if length(strd) = 1 then
begin
strd := '0' + strd[1];
end;
y := 0;
val(stry, y, code);repeat
if (strm = '01') or (strm = '03') or (strm = '05') or (strm = '07') or
(strm = '08') or (strm = '10') or (strm = '12') then
month := 31
else if strm <> '02' then
month := 30
else
beginif ((y mod 4 = 0) and (y mod 100 <> 0)) or (y mod 400 = 0) then
month := 29
else
month := 28;
end;
if strd[1] = '0' then
begin
s := copy(strd, 2, 1);
val(s, d, code);
end
else
val(strd, d, code);
if (strm = '12') and (d = month) then
begin
Inc(y);
strm := '01';
strd := '01';
str(y, stry);
d := 0;
end
else
if (strm = '09') and (d = month) then
begin
strm := '10';
strd := '01';
d := 0;
end
else
if (d = month) then
begin
strm[2] := chr(Ord(strm[2]) + 1);
strd := '01';
d := 0;
end
else
begin
Inc(d);
str(d, strd);
if length(strd) = 1 then
strd := '0' + strd;
end;
Inc(ans);
until ans = 10000;
if strm[1] = '0' then
s1 := copy(strm, 2, 1)
else
s1 := strm;
if strd[1] = '0' then
s2 := copy(strd, 2, 1)
else
s2 := strd;
writeln(stry, '-', s1, '-', s2);
end. -
08 年前@
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,y,r,rr,d=10000;
cin>>n>>y>>r;
for(d=10000;d>0;d--)
{r++;
if(n%4!=0)
{switch(y)
{case 2:rr=28;break;
case 4:rr=30;break;
case 6:rr=30;break;
case 9:rr=30;break;
case 11:rr=30;break;
default:rr=31;break;
}
if(r>rr){y++;r=1;}
if(y>12){n++;y=1;}}
else{switch(y)
{case 2:rr=29;break;
case 4:rr=30;break;
case 6:rr=30;break;
case 9:rr=30;break;
case 11:rr=30;break;
default:rr=31;break;
}
if(r>rr){y++;r=1;}
if(y>12){n++;y=1;}}
}
cout<<n<<"-"<<y<<"-"<<r;
return 0;
} -
08 年前@
-
08 年前@
哈哈哈哈哈 纯模拟你敢信吗,供参考,代码逻辑清晰的一逼
```c++
#include<cstdio>
#include<cmath>
#include<cstring>
int main()
{
int year,month,day;
int sh[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int th[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d%d",&year,&month,&day);
for(int i=1; i <= 10000; i++,day++)
{
// printf("month = %d day = %d\n",month,day);
//是闰年
if(year % 400==0||(year % 4 == 0 && year % 100 != 0))
{if(day+1 > th[month])
{
if(month == 12)
{
year++;
month = 0;
}
month++;
day = 0;
}}
else
{
if(day+1 > sh[month])
{
if(month == 12)
{
year++;
month = 0;
}
month++;
day = 0;
}
}
}
printf("%d-%d-%d\n",year,month,day);return 0;
} -
08 年前@
/*注意到数据不大,直接枚举*/
#include <cstdio>
#define Limit 10000
#define MonthCou 12int MonDay[MonthCou] = {31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
bool IsR(){
if((year%4 == 0&&year%100 != 0)||(year%100 == 0&&year%400 == 0)) return true;
else return false;
}void increase(){
if(IsR()) MonDay[1] = 29; //判断闰年
else MonDay[1] = 28; //千万不要忘记复位!
day++;
if(day > MonDay[month-1]){ day = 1; month++; }
//一定要注意月份和天数是从 1 开始的,资深 OIer 可能会写成 0 ,就像我 ......
if(month > MonthCou){ month = 1; year++; }
}int main(){
scanf("%d %d %d",&year,&month,&day);
for(int i = 1; i <= Limit; i++) increase();
printf("%d-%d-%d\n",year,month,day);return 0;
} -
09 年前@
var
q:array[1..12] of integer;
a,i,o,p:integer;
begin
read(a,o,p);
q[1]:=31;
q[3]:=31;
q[4]:=30;
q[5]:=31;
q[6]:=30;
q[7]:=31;
q[8]:=31;
q[9]:=30;
q[10]:=31;
q[11]:=30;
q[12]:=31;
for i:=1 to 10000 do
begin
inc(p);
if p >q[o] then begin
inc(o);
p:=1;
if o>12 then begin
inc(a);
o:=1;
end;
if (a mod 4=0) and (a mod 100<>0) or (a mod 400=0) then q[2]:=29
else q[2]:=28;
end;end;
write(a,'-',o,'-',p);
end. -
09 年前@
var
yf:array[1..12]of integer;
i,j,k,y,m,d,ay,am,ad:longword;
begin
readln(y,m,d);
yf[1]:=31; yf[3]:=31; yf[4]:=30; yf[5]:=31; yf[6]:=30;
yf[7]:=31; yf[8]:=31; yf[9]:=30; yf[10]:=31; yf[11]:=30; yf[12]:=31;
for i:=1 to 10000 do
begin
inc(d);
if d>yf[m] then
begin
inc(m);
d:=1;
end;
if m>12 then
begin
inc(y);
m:=1;
end;
if (y mod 4=0)and(y mod 100<>0)or(y mod 400=0) then
yf[2]:=29 else yf[2]:=28;
end;
writeln(y,'-',m,'-',d);
end. -
09 年前@
我去坑爹啊,测试数据不用补0,害我20分还以为什么
Pascal AC
var n,y,m,d,i,k:longint;
a:array[1..12]of longint=(31,28,31,30,31,30,31,31,30,31,30,31);
begin
read(y,m,d);
n:=10000;
if (y mod 4=0)and(y mod 100<>0)or(y mod 400=0) then a[2]:=29;
for i:=1 to m-1 do
n:=n+a[i];
m:=1;
n:=n+d-1;
d:=1;
while n>364 do
begin
if (y mod 4=0)and(y mod 100<>0)or(y mod 400=0) then
begin
if n-366>=0 then begin
n:=n-366;
inc(y);
end
else break;
end
else begin
n:=n-365;
inc(y);
end;
end;
a[2]:=28;
if (y mod 4=0)and(y mod 100<>0)or(y mod 400=0) then a[2]:=29;
for i:=1 to 12 do
if n-a[i]>=0 then
begin
n:=n-a[i];
inc(m);
end;
d:=d+n;
write(y,'-',m,'-',d);
end. -
09 年前@
本来,闰年是一个很复杂的东西,但是由于这题的year可以被控制在1949<=year<=2099,所以,没必要考虑别的,直接用year对4取模,结果是0就是闰年,否则就不是
#include<iostream>
using namespace std;
int main()
{
int y,m,d,day[13];
cin>>y>>m>>d;
day[1]=31;
day[2]=28;
day[3]=31;
day[4]=30;
day[5]=31;
day[6]=30;
day[7]=31;
day[8]=31;
day[9]=30;
day[10]=31;
day[11]=30;
day[12]=31;
for (int i=1;i<=10000;i++)
{
if (y%4==0)
day[2]=29;
else day[2]=28;
d++;
if (d>day[m])
{
m++;
d=1;
}
if (m==13)
{
m=1;
y++;
}
}
cout<<y<<"-"<<m<<"-"<<d;
} -
09 年前@
献上我的愚见:program p1211;
var
y,m,d:longint;
yuefen:array[1..12] of longint;
i,x:longint;
begin
readln(y,m,d);
yuefen[1]:=31;
yuefen[10]:=31;yuefen[11]:=30;yuefen[12]:=31;
yuefen[3]:=31;yuefen[4]:=30;yuefen[5]:=31;yuefen[6]:=30;yuefen[7]:=31;yuefen[8]:=31;yuefen[9]:=30;
for i:=1 to 10000 do
begin
inc(d);
if d>yuefen[m] then
begin
inc(m);d:=1;
end;
if m>12then
begin
inc(y);
m:=1;
d:=1;
end;
if ((y mod 100 =0) and (y mod 400 =0)) or ((y mod 100 <>0 ) and (y mod 4=0)) then
yuefen[2]:=29 else yuefen[2]:=28;
end;
writeln(y,'-',m,'-',d);readln;readln;
end. -
09 年前@
第一百题纪念!
#include <cstdio>
#include <cstdlib>using namespace std;
int y, m, d;
int main(int argc, const char *argv[]) {
scanf("%d %d %d", &y, &m, &d);
for (int i = 1; i <= 10000; ++i) {
++d;
if (d == 29 && m == 2 && y % 4 != 0) {
m = 3;
d = 1;
continue;
}
if (d == 30 && m == 2 && ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))) {
m = 3;
d = 1;
continue;
}
if (d == 31 && (m == 4 || m == 6 || m == 9 || m == 11)) {
++m;
d = 1;
}
if (d == 32 && (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)) {
++m;
d = 1;
}
if (m == 13) {
++y;
m = 1;
d = 1;
}
}
printf("%d-%d-%d\n", y, m, d);
return 0;
} -
09 年前@
#include<stdio.h>
int ping[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int yun[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int f(int x)
{
if(x%400==0||((x%100!=0)&&(x%4==0)))
{
return 366;
}
else
{
return 365;
}
}
bool f1(int x)
{
if(x%400==0||((x%100!=0)&&(x%4==0)))
{
return 1;
}
else
{
return 0;
}
}
int main()
{int nian,yue,ri;
while(scanf("%d%d%d",&nian,&yue,&ri)!=EOF)
{
int i,j;
int n1;
n1=10000;
while(n1-f(nian)>=0)
{
nian++;
n1-=f(nian);
}
if(f1(nian))
{
n1-=(yun[yue]-ri);
n1--;
ri=1;
yue++;
int dd;
dd=0;
for(i=yue;i<=12;i++)
{
if(n1-yun[i]<0)
{
dd=1;//˵Ã÷ûÓнüλ
break;
}
else
{
n1-=yun[i];
yue++;
}
}
if(dd==1)
{
printf("%d-%d-%d",nian,yue,ri+n1);
}
else
{
nian++;
yue=1;
for(i=yue;i<=12;i++)
{
if(n1-ping[i]<0)
{
break;
}
else
{
n1-=ping[i];
yue++;
}
}
printf("%d-%d-%d",nian,yue,ri+n1);
}
}
else
{
n1-=(ping[yue]-ri);
n1--;
ri=1;
yue++;
int dd;
dd=0;
for(i=yue;i<=12;i++)
{
if(n1-ping[i]<0)
{
dd=1;//˵Ã÷ûÓнüλ
break;
}
else
{
n1-=ping[i];
yue++;
}
}
if(dd==1)
{
printf("%d-%d-%d",nian,yue,ri+n1);
}
else
{
nian++;
if(f1(nian))
{
yue=1;
for(i=yue;i<=12;i++)
{
if(n1-yun[i]<0)
{
break;
}
else
{
n1-=yun[i];
yue++;
}
}
printf("%d-%d-%d",nian,yue,ri+n1);
}
else
{
yue=1;
for(i=yue;i<=12;i++)
{
if(n1-ping[i]<0)
{
break;
}
else
{
n1-=ping[i];
yue++;
}
}
printf("%d-%d-%d",nian,yue,ri+n1);
}
}
}
}
return 0;
} -
010 年前@
哦= =要当心不要一到30天就换月,因为30号你还没过= =555,磨蹭了我好久。
###block code
program P1211;
var y,m,d,i:longint;
pd:boolean;
function runnian(x:longint):boolean;
begin
if ((x mod 4=0) and (x mod 100<>0)) or (x mod 400=0) then
exit(true)
else
exit(false);
end;procedure change;
begin
case m of
1:if d=32 then begin d:=1; inc(m); end;
3:if d=32 then begin d:=1; inc(m); end;
4:if d=31 then begin d:=1; inc(m); end;
5:if d=32 then begin d:=1; inc(m); end;
6:if d=31 then begin d:=1; inc(m); end;
7:if d=32 then begin d:=1; inc(m); end;
8:if d=32 then begin d:=1; inc(m); end;
9:if d=31 then begin d:=1; inc(m); end;
10:if d=32 then begin d:=1; inc(m); end;
11:if d=31 then begin d:=1; inc(m); end;
12:if d=32 then begin d:=1; inc(m); end;
end;pd:=runnian(y);
if m=2 then
begin
if (pd=true) and (d=30) then
begin
d:=1; inc(m);
end;
if (pd=false) and (d=29) then
begin
d:=1; inc(m);
end;
end;if m=13 then
begin
inc(y); m:=1;
end;end;
begin //main
read(y,m,d);
for i:=1 to 10000 do
begin
inc(d);
if (d>=28) and (m=2) then
change;
if d>=30 then
change;
end;write(y,'-',m,'-',d);
end. -
010 年前@
过了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!