Blue Bridge Cup 2020 11 ° C Idioma Grupo B Competencia provincial Ejercicio Problema Solución-Ejercicio D. Ejercicio de carrera

Preguntas diarias (97)

La 11a Copa Lanqiao C Grupo de idiomas B Competencia provincial Ejercicio D: Ejercicio de carrera (10 ')

Inserte la descripción de la imagen aquí

Ideas:

Primero, configure una matriz de meses para registrar la cantidad de días en cada mes y luego considere el impacto de los años promedio de los años bisiestos en la cantidad de días en febrero.

Debido a que la pregunta pregunta cuántos kilómetros, entonces el número ordinario de días 1 equivale a 1 kilómetro y la fórmula de la suma es:

El número total de días en 2000.1.1 ~ 2020.10.1 + el número de días al comienzo del mes pero no el lunes en 2000.1.1 ~ 2020.10.1 + el número de días en lunes en 2000.1.1 ~ 2020.10.1

El número total de días es fácil de calcular, entonces, ¿cómo considerar el número de días al comienzo del mes pero no el lunes? Solo necesitamos establecer una condición de juicio si ((el número total de días hasta ahora + 6)% 7! = 1)

Un amigo preguntará, ¿por qué es +6?

Debido a que dijo que 2000.1.1 es sábado, es equivalente al número original desplazado seis unidades a la derecha del Sol. ¿Es mejor entender esto?

El siguiente paso es calcular el número de días del lunes. Hagamos un dibujo. La
Inserte la descripción de la imagen aquí
línea naranja de arriba es 2000.1. Centrémonos en 2000.1. ¿Cómo dividirlo entre 7? Por supuesto que es menos 2 más 6, así es como (suma-2 + 6) / 7 viene de

Código C ++ detallado:

#include<iostream>
using namespace std;
int sum = 0, s = 0;
int month[13]={
    
    0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    
    
	for(int i = 2000; i < 2020; i++)
	{
    
    
		if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) 
		{
    
    
			month[2]++;				//闰年 
		}
		for(int i = 1; i <= 12;i++)
		{
    
    
			if((sum + 6) % 7 != 1)
			{
    
    
				s++;		//计算是月初且不是周一的日子 
			}
			sum += month[i];
				
		}
			if(month[2] == 29) 
			{
    
    
				month[2]--;
			}
	}
	month[2]++;
	//2020年的前9个月 
	for(int i = 1; i <= 9; i++)
	{
    
    
		if((sum + 6) % 7 != 1)
		{
    
    
			s++;			//计算是月初且不是周一的日子 
		}
		sum += month[i];
	}
	//加上2020.10.1日
	sum += 1;
	s++; 
	int z = sum + s + (sum - 2 + 6) / 7;
	cout << z << endl;
	return 0; 
}

Resultado de la operación:
Inserte la descripción de la imagen aquí
la respuesta es 8879

Si te gusta mi artículo, por favor recuerda tres veces consecutivas, dale me gusta y sigue la colección, cada me gusta y cada una de tu atención y cada colección será mi motivación infinita en el camino a seguir! ! ! ↖ (▔ ▽ ▔) ↗ ¡Gracias por su apoyo, el próximo número será más emocionante! ! !

Supongo que te gusta

Origin blog.csdn.net/qq_44631615/article/details/113834445
Recomendado
Clasificación