luogu parte 1.3 fecha palíndromo (basada en cadenas)

P2010 [Grupo de Popularización NOIP2016] Palíndromo Fecha
Título Descripción
En la vida diaria, los tres elementos de año, mes y día pueden expresar una fecha claramente definida.

Niuniu está acostumbrado a expresar una fecha con 88 dígitos. Los primeros 44 dígitos representan el año, los siguientes 22 dígitos representan el mes y los últimos 22 dígitos representan la fecha. Obviamente: solo hay una forma de representar una fecha, y la forma de representar dos fechas diferentes no será la misma.

Niuniu cree que una fecha es un palíndromo, si y solo si el número de 8 dígitos que representa la fecha es un palíndromo. Ahora, Niuniu quiere saber cuántas fechas reales son palíndromos entre las dos fechas que especificó.

Un número de 88 dígitos es palíndromo, si y solo si para todo i (1 \ le i \ le 8) i (1≤i≤8) el i-ésimo dígito se cuenta de izquierda a derecha y el 9-i9− El i los números (es decir, el i-ésimo número de derecha a izquierda) son iguales.

P.ej:

• Para el 19 de noviembre de 2016, se utiliza el número de 88 dígitos 2016111920161119 para indicar que no es un palíndromo.

• Para el 2 de enero de 2010, está representado por el número de 88 dígitos 2010010220100102, que es un palíndromo.

• Para el 2 de octubre de 2010, está representado por 88 dígitos 2010100220101002, que no es un palíndromo.

Hay 1212 meses en cada año:

Entre ellos, 1,3,5,7,8,10,121,3,5,7,8,10,12 meses tienen 3131 días; 4,6,9,114,6,9,11 meses tienen 3030 días Para 22 meses, hay 2929 días en un año bisiesto y 2828 días en un año normal.

Un año es bisiesto si y solo si cumple una de las dos condiciones siguientes:

1. Este año es un múltiplo entero de 44, pero no un múltiplo entero de 100100;

2. Este año es un múltiplo integral de 400400.

P.ej:

• Los años siguientes son todos bisiestos: 2000, 2012, 2016 2000, 2012, 2016.

• Los siguientes años son años promedio: 1900, 2011, 2014 1900, 2011, 2014.

Formato de entrada
Dos líneas, cada línea incluye un número de 88 dígitos.

La primera línea representa la fecha de inicio especificada por Niuniu.

La segunda línea indica la fecha de finalización especificada por Niuniu.

Asegúrese de que date_idate_i y ambas sean fechas reales, y la parte del año debe tener 44 dígitos y el primer dígito no es 00.

Asegúrese de que la fecha 1fecha1 no sea posterior a la fecha 2fecha2.

Formato de salida
Un número entero que indica cuántas fechas son palíndromos entre date1date1 y date2date2.

Entrada y salida de muestra
entrada n. ° 1 copia
20110101
20111231
salida n. ° 1 copia
1
entrada n. ° 2 copia
20000101
20101231
salida n. ° 2 copia
2
descripción / solicitud
[Descripción de muestra]

Por ejemplo 1, la fecha elegible es 2011110220111102.

Por ejemplo 2, las fechas elegibles son 2001100220011002 y 2010010220100102.

【Subtareas】

Para el 60% 60% de los datos, se cumple date1 = date2date1 = date2.

Ya me había encontrado con las 20 competiciones provinciales de la Blue Bridge Cup. En ese momento, escribí el año enumerado y los bucles for i y j se cancelaron como =. = ~ Esta vez, la fecha del palíndromo se enumera directamente

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
int s[15]={
    
    0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){
    
    //二月不需要判断是否是闰年,因为0229反过来是9220,整个日期是92200229,而9220年是闰年 
	int n,m,c,sum,ans=0;
	cin>>n>>m;
	for(int i=1;i<=12;i++){
    
    
		for(int j=1;j<=s[i];j++){
    
    
			c=(j%10)*1000+(j/10)*100+(i%10)*10+(i/10);
			sum=c*10000+i*100+j;
			if(sum<n||sum>m)continue;
			ans++;
		}
	}cout<<ans; 

	return 0;
	
}

Supongo que te gusta

Origin blog.csdn.net/Minelois/article/details/113763753
Recomendado
Clasificación