129 条题解
-
0何子睿 LV 6 @ 2009-09-14 19:20:02
var x,y,n,s:longint;
begin
read(x,y,n);
s:=10000;
repeat
n:=n+1;s:=s-1;
if (n=30)and(y=2)and(x mod 4=0)then begin n:=1;y:=y+1;end;
if (n=29)and(y=2)and(x mod 40)then begin n:=1;y:=y+1;end;
if (n=32)and((y=1)or(y=3)or(y=5)or(y=7)or(y=8)or(y=10)or(y=12))
then begin n:=1;y:=y+1;end;
if (n=31)and((y=4)or(y=6)or(y=9)or(y=11))then begin n:=1;y:=y+1;end;
if y=13 then begin y:=1;x:=x+1;end;
until s=0;
write(x,'-',y,'-',n);
end.
百分之百的通过 -
02009-09-05 15:01:13@
var
y,m,d,i:longint;
flag:boolean;
begin
readln(y,m,d);
for i:=1 to 10000 do
begin
flag:=false;
if (y mod 100 = 0) and (y mod 400=0) then flag:=true;
if (y mod 100 0) and (y mod 4 =0) then flag:=true;
inc(d);
if (d=32) and (m=12) then begin inc(y); m:=1; d:=1; continue; end;
if flag and (m=2) and (d=30) then begin inc(m); d:=1; continue; end;
if not(flag) and (m=2) and (d=29) then begin inc(m); d:=1; continue; end;
if (m in [1,3,5,7,8,10]) and (d=32) then begin inc(m); d:=1; continue; end;
if (m in [4,6,9,11]) and (d=31) then begin inc(m); d:=1; continue; end;
end;
writeln(y,'-',m,'-',d);
end. -
02009-08-25 16:01:35@
var
y,m,d,t:integer;
function day(k:integer):integer;
var days:integer;
begin
case m of
1,3,5,7,8,10,12:days:=31;
4,6,9,11:days:=30;
2:if ((y mod 4=0) and (y mod 1000)) or ((y mod 100=0) and (y mod 400=0))
then days:=29
else days:=28;
end;
day:=days;
end;
begin
assign(input,'1.in');
assign(output,'1.out');
reset(input);
rewrite(output);
readln(y,m,d);
t:=10000;
repeat
t:=t-1;
d:=d+1;
if d>day(m) then begin d:=1;inc(m);end;
if m>12 then begin m:=1;inc(y);end;
until
t=0;
writeln(y,'-',m,'-',d);
close(input);
close(output);
end. -
02009-08-20 17:22:53@
const
a:array[1..12] of integer=(31,28,31,30,31,30,31,31,30,31,30,31);
var
y,m,d:longint;
function check:longint;
begin
check:=0;
if (((y mod 4=0) and (y mod 1000)) or (y mod 400=0)) and (m=2) then
check:=1;
end;
begin
readln(y,m,d);
d:=10000+d;
while d>a[m]+check do
begin
d:=d-a[m]-check;
inc(m);
if m=13 then
begin
m:=1;
inc(y);
end;
end;
writeln(y,'-',m,'-',d);
end.25行搞定
抄我的吧
-
02009-08-18 19:51:34@
var
y,m,d,s,i:integer; run:boolean;
begin
read(y,m,d);
y:=y+24; s:=10000-(365*4+1)*6;
for i:=1 to s do
begin
inc(d);
if((y mod 4=0)and(y mod 1000))or(y mod 400=0)then
run:=true else run:=false;
if d>28 then
case m of
2:if((d=29)and(not run))or((d=30)and(run)) then
begin inc(m); d:=1; end;
1,3,5,7,8,10:if d=32 then begin inc(m); d:=1; end;
4,6,9,11:if d=31 then begin inc(m); d:=1; end;
12:if d=32 then begin inc(y);m:=1; d:=1; end;
end;
end;
write(y,'-',m,'-',d);
end. -
02009-08-15 18:24:11@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
y,m,d,s,i:integer; run:boolean;
begin
read(y,m,d);
y:=y+24; s:=10000-(365*4+1)*6;
for i:=1 to s do
begin
inc(d);
if((y mod 4=0)and(y mod 1000))or(y mod 400=0)then
run:=true else run:=false;
if d>28 then
case m of
2:if((d=29)and(not run))or((d=30)and(run)) then
begin inc(m); d:=1; end;
1,3,5,7,8,10:if d=32 then begin inc(m); d:=1; end;
4,6,9,11:if d=31 then begin inc(m); d:=1; end;
12:if d=32 then begin inc(y);m:=1; d:=1; end;
end;
end;
write(y,'-',m,'-',d);
end.
ps:秒杀,太简单了 -
02009-08-15 12:26:15@
耶~
终于俩星了……
哈哈哈哈哈~ -
02009-08-08 07:48:33@
题目出的水 不用考虑判断闰年的更复杂的情况
var
max:array[1..12] of integer;
y,m,d,i:longint;
begin
readln(y,m,d);
max[1]:=31; max[3]:=31; max[5]:=31; max[7]:=31; max[8]:=31; max[10]:=31; max[12]:=31;
max[4]:=30; max[6]:=30; max[9]:=30; max[11]:=30;
while imax[m] then
begin
dec(d,max[m]);
inc(m);
end;
if m>12 then
begin
dec(m,12);
inc(y);
end;
end;
writeln(y,'-',m,'-',d);
end. -
02009-08-03 20:59:34@
绝对水题。。。。。。。
Accepted 有效得分:100 有效耗时:0ms
一次AC。。。。。。。。。。。 -
02009-07-30 14:30:29@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msconst
n:array[1..12] of integer=(31,28,31,30,31,30,31,31,30,31,30,31);
var
y,m,d:integer;function check:integer;
begin
if (y mod 4 = 0)and(m=2) then exit(1); exit(0);
end;begin
readln(y,m,d);
inc(d,10000);
while d>n[m]+check do
begin
dec(d,n[m]+check); inc(m);
if m=13 then begin m:=1; inc(y); end;
end;
writeln(y,'-',m,'-',d);
end.绝对最短、、!!!!! 下面几楼写那么长的程序也敢说水题???
有大牛写更短的吗?
-
02009-07-28 14:17:09@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms庆祝本人在VijosAC第50题!
-
02009-07-28 14:13:15@
一次AC啊
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar y,m,d:integer;
function days(y,m:integer):integer;
begin
case m of
1,3,5,7,8,10,12:exit(31);
4,6,9,11:exit(30);
2:
if ((y mod 4=0)and(y mod 1000))or(y mod 400=0) then exit(29)
else exit(28);
end;
end;begin
read(y,m,d);
d:=d+10000;
while d>days(y,m) do
begin
d:=d-days(y,m);
m:=m+1;
if m>12 then
begin
m:=m-12;
y:=y+1;
end;
end;
write(y,'-',m,'-',d);
end. -
02009-07-26 00:47:40@
水题啊~
庆祝一下,难得一次AC
^_^#include
using namespace std;int year,month,day;
void init ()
{
cin>>year>>month>>day;
}int data;
int t[3][13];void make ()
{
t[1][1]=31;
t[1][2]=28;
t[1][3]=31;
t[1][4]=30;
t[1][5]=31;
t[1][6]=30;
t[1][7]=31;
t[1][8]=31;
t[1][9]=30;
t[1][10]=31;
t[1][11]=30;
t[1][12]=31;
t[2][1]=31;
t[2][2]=29;
t[2][3]=31;
t[2][4]=30;
t[2][5]=31;
t[2][6]=30;
t[2][7]=31;
t[2][8]=31;
t[2][9]=30;
t[2][10]=31;
t[2][11]=30;
t[2][12]=31;
}int pd ()
{
if (year%4==0) return 2;
else return 1;
}void work ()
{
int i,k;
make ();
k=pd ();
while (1)
{
day++;
if (t[k][month]==day-1)
{
day=1;
month++;
}
if (month==13)
{
year++;
month=1;
k=pd ();
}
data++;
if (data==10000) break;
}
}void output ()
{
cout -
02009-07-23 15:34:42@
program dsa;
var n,y,r,i:integer;
begin
read(n,y,r);
for i:=1 to 10000 do
begin
if ((y=1)or(y=3)or(y=5)or(y=7)or(y=8)or(y=10))and(r=31)then begin inc(y);r:=1;end
else if (y=12) and (r=31) then begin inc(n);y:=1;r:=1;end
else if ((y=4)or(y=6)or(y=9)or(y=11))and(r=30)then begin inc(y);r:=1;end
else if (y=2)and(n mod 40)and(r=28) then begin inc(y);r:=1;end
else if (y=2)and((n mod 400=0)or((n mod 1000)and(n mod 4=0)))and(r=29)then begin inc(y);r:=1;end
else inc(r);
end;
write(n,'-',y,'-',r);
end.农夫山泉
-
02009-06-14 09:50:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include
int year(int n)
{
if( n%400==0 || (n%100!=0&&n%4==0) )
return 1;
return 0;
}
int main()
{
int yy,mm,dd,i;
int m[][13]={ {-1,31,28,31,30,31,30,31,31,30,31,30,31},
{-1,31,29,31,30,31,30,31,31,30,31,30,31} };
scanf("%d%d%d",&yy,&mm,&dd);
for(i=0;im[year(yy)][mm])
{
mm++; dd=1;
}
if(mm>12)
{
yy++; mm=1; dd=1;
}
}
printf("%d-%d-%d\n",yy,mm,dd);
getchar();
getchar();
return 0;
}
/*一开始忘了数组下标从0开始了
提交了几次都没AC,郁闷*/ -
02009-06-07 16:07:35@
program p1211;
var
yy,mm,dd:int64;
i:integer;
procedure rijinyue;
begin
dd:=1;
inc(mm);
end;
procedure yuejinnian;
begin
mm:=1;
dd:=1;
inc(yy);
end;
begin
read(yy,mm,dd);
for i:=1 to 10000 do
begin
inc(dd);
begin
if (mm=1)and(dd=32)
then rijinyue;
if (mm=3)and(dd=32)
then rijinyue;
if (mm=5)and(dd=32)
then rijinyue;
if (mm=7)and(dd=32)
then rijinyue;
if (mm=8)and(dd=32)
then rijinyue;
if (mm=10)and(dd=32)
then rijinyue;
if (mm=12)and(dd=32)
then rijinyue;
if (mm=4)and(dd=31)
then rijinyue;
if (mm=6)and(dd=31)
then rijinyue;
if (mm=9)and(dd=31)
then rijinyue;
if (mm=11)and(dd=31)
then rijinyue;
if ((yy mod 1000)and(yy mod 4=0))or(yy mod 400=0)
then begin
if(mm=2)and(dd=30)
then rijinyue
end
else
if (mm=2)and(dd=29)
then rijinyue;
end;
begin
if mm=13
then yuejinnian;
end;
end;
write(yy,'-',mm,'-',dd);
end. -
02009-06-02 19:09:51@
洪水泛滥啊!
-
02009-05-30 12:38:58@
program temp;
var
yy,mm,dd,i:integer;
procedure im;
begin
dd:=1;
inc(mm);
end;
procedure iy;
begin
mm:=1;
dd:=1;
inc(yy);
end;
begin
readln(yy,mm,dd);
for i:=1 to 10000 do
if dd -
02009-05-24 12:14:25@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
模拟的方法,不过我一开始不小心把判断闰年的数忘了变成FALSE了,结果花了好久才ac,~~~~(>_ -
02009-05-19 18:32:30@
#include
using namespace std;
int yy,mm,dd;
int day=10000;;
int da[3][13]=
{
{0,0,0, 0,0,0 ,0,0,0 ,0,0,0,0},
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int judge(int year)
{
if(year%100==0)
{ if(year%400==0)return 1;
else return 0;}
else
{if(year%4==0)return 1;
else return 0;
}
}
bool gtr=false;
int main()
{
cin>>yy>>mm>>dd;
int Y=yy,M=mm,D=dd;
day+=D;
for(int i=yy;;i++)
{ int k=1;
if(judge(i))k=2;
for(int j=M;j