Preguntas diarias (97)
La 11a Copa Lanqiao C Grupo de idiomas B Competencia provincial Ejercicio D: Ejercicio de carrera (10 ')
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
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:
la respuesta es 8879