神坑模拟,
这种题,没意思
#include<bits/stdc++.h>
using namespace std;
int sum=0;
bool prime(int x)
{
int i;
if(x==1)
return 0;
for(i=2;i*i<=x;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
bool leap(int x)
{
if(x%4==0&&x%100!=0)
return 1;
if(x%100==0&&x%400==0)
return 1;
return 0;
}
void cal(int x,int y)
{
for(int i=x;i<=y;i++)
{
if(prime(i))
sum++;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
sum=0;
int i,j,k;
int y1,m1,d1,y2,m2,d2;
cin>>y1>>m1>>d1>>y2>>m2>>d2;
if(y1==y2)
{
if(m1==m2)
{
if(prime(m1))
{
cal(d1,d2);
}
cout<<sum<<endl;
continue;
}
else
{
if(prime(m1))
{
if(m1==2)
{
cal(d1,28);
if(leap(y1))
sum++;
}
else if(m1==11)
cal(d1,30);
else
cal(d1,31);
}
m1++;
for(i=m1;i<m2;i++)
{
if(prime(i))
{
if(i==2)
{
cal(1,28);
if(leap(y1))
sum++;
}
else if(i!=11)
cal(1,31);
else
cal(1,30);
}
}
if(prime(m2))
cal(1,d2);
cout<<sum<<endl;
continue;
}
}
else
{
if(prime(m1))
{
if(m1==2)
{
cal(d1,28);
if(leap(y1))
sum++;
}
else if(m1!=11)
cal(d1,31);
else
cal(d1,30);
}
m1++;
for(j=m1;j<=12;j++)
{
if(prime(j))
{
if(j==2)
{
cal(1,28);
if(leap(y1))
sum++;
}
else if(j!=11)
{
cal(1,31);
}
else
cal(1,30);
}
}
y1++;
for(i=y1;i<y2;i++)
{
if(leap(i))
{
sum+=53;
}
else
sum+=52;
}
for(j=2;j<m2;j++)
{
if(prime(j))
{
if(j==2)
{
cal(1,28);
if(leap(y2))
sum++;
}
else if(j==11)
{
cal(1,30);
}
else
cal(1,31);
}
}
if(prime(m2))
{
cal(1,d2);
}
cout<<sum<<endl;
}
}
return 0;
}