xyz0815 @ 2019-05-29 16:29:17
luogu上AC了,然而某OJ上WA
求找错
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
char a[10],b[10],s[10];
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int cnt,ys,yf,ms,mf,ds,df;
int con(char x[],int y,int z)//将字符串转为数字
{
int s=0;
for(int i=y;i<=z;i++)
{
s+=int(x[i]-'0')*pow(10,double(z-i));
}
return s;
}
void cons(int x,int y,int z)//将数字转为字符串
{
for(int i=y;i<=z;i++)
{
s[i]=char((x/int(pow(10,double(z-i))))%10)+'0';
}
return;
}
bool check(char x[],char y[])//判断字符是否回文
{
char z[10];
int c=0;
for(int i=7;i>=0;i--)
z[c++]=y[i];
z[c]='\0';
if(strcmp(z,x)==0)
return 1;
else
return 0;
}
bool run(int y)
{
if((y%4==0&&y%100!=0)||y%400==0)
return 1;
else
return 0;
}
bool ok(int y,int md)
{
int m,d;
m=md/1000%10*10+md/100%10;
d=md/10%10*10+md%10;
if(y==ys)
{
if(m<ms||(m==ms&&d<ds))
return 0;
}
if(y==yf)
{
if(m>mf||(m==mf&&d>df))
return 0;
}
if(m>=1&&m<=12)
{
if(m==2)
{
if(run(y))
{
if(d>=1&&d<=mon[m]+1)
{
return 1;
}
}
}
if(d>=1&&d<=mon[m])
{
return 1;
}
}
return 0;
}
int main()
{
cin>>a>>b;
int i,j,t;
char m[5];
ys=con(a,0,3);
yf=con(b,0,3);
ms=con(a,4,5);
mf=con(b,4,5);
ds=con(a,6,7);
df=con(b,6,7);
if(ys==yf&&ms==mf&&ds==df)
{
if(check(a,b))
{
cout<<1;
return 0;
}
else
{
cout<<0;
return 0;
}
}
for(i=ys;i<=yf;i++)
{
t=0;
cons(i,0,3);
for(j=3;j>=0;j--)
{
m[t++]=s[j];
}
t=con(m,0,3);
if(ok(i,t))
{
cnt++;
}
}
cout<<cnt;
return 0;
}
by zhanghanbin @ 2019-05-29 16:35:20
I don't know