1 solutions

  • 0
    @ 2025-11-5 15:36:35

    C++ :

    #include <stdio.h>
    
    int prime(int n)
    {
    	if(n == 2)
    		return 1;
    	else if(n < 2)
    		return 0;
    	for(int i = 2 ; i * i <= n ; i ++)
    		if(n % i == 0)
    			return 0;
    	return 1;
    }
    
    int Leap(int n)
    {
    	if((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
    		return 1;
    	return 0;
    }
    
    int monthday(int n,int m)
    {
    	if(n == 2)
    	{
    		if(Leap(m))
    			return 29;
    		else
    			return 28;
    	}
    	if(n <= 7)
    	{
    		if(n % 2 == 1)
    			return 31;
    		else
    			return 30;
    	}
    	else
    	{
    		if(n % 2 == 0)
    			return 31;
    		else
    			return 30;
    	}
    }
    
    int yearday(int n)
    {
    	int num = 0;
    	for(int i = 1 ; i <= 12; i ++)
    	{
    		if(prime(i))
    		{
    			for(int j = 1 ; j <= monthday(i,n) ; j ++)
    				if(prime(j))
    					num++;
    		}
    	}
    	return num;
    }
    
    int count(int year, int m1, int m2, int n1, int n2)
    {
    	int i, j, num = 0, s, e;
    	for(i = m1 ; i <= m2; i ++)
    	{
    		if(prime(i))
    		{
    			if(i == m1)
    				s = n1;
    			else
    				s = 1;
    			if(i == m2)
    				e = n2;
    			else
    				e = monthday(i,year);
    			for(j = s ; j <= e ; j ++)
    				if(prime(j))
    					num++;
    		}
    	}
    	return num;
    }
    
    int main ()
    {
    	//freopen("A.in", "r", stdin);
    	//freopen("A.out", "w", stdout);
    	int re, y1, y2, m1, m2, n1, n2, i, j;
    	scanf("%d",&re);
    	while(re--)
    	{
    		int num = 0;
    		scanf("%d%d%d%d%d%d",&y1,&m1,&n1,&y2,&m2,&n2);
    		if(y1 == y2)
    		{
    			if(m1 == m2)
    			{
    				if(prime(m1))
    				{
    					for(i = n1 ; i <= n2 ; i ++)
    					{
    						if(prime(i))
    							num++;
    					}
    				}
    			}
    			else
    			{
    				num+= count(y1,m1,m2,n1,n2);
    			}
    		}
    		else
    		{
    			for(i = y1 ; i <= y2 ; i ++)
    			{
    				if(i == y1)
    				{
    					num += count(i,m1,12,n1,31);
    				}
    				else if (i == y2)
    				{
    					num += count(i,1,m2,1,n2);
    				}
    				else
    				{
    					num += yearday(i);
    				}
    			}
    		}
    		printf("%d\n",num);
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    16952
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By