Preguntas diarias (101)
Pregunta A: Diferencia de fecha
Descripción del Título
Hay dos fechas, encuentre el número de días entre las dos fechas, si las dos fechas son consecutivas, establecemos el número de días entre ellas como dos días.
ingresar
Hay varios conjuntos de datos, cada conjunto de datos tiene dos filas, que representan dos fechas, en forma de AAAAMMDD
Producción
Genere una fila para cada grupo de datos, es decir, la diferencia de fecha
Entrada de muestra
20130101
20130105
Salida de muestra
5
Código C ++:
#include<cstdio>
int month[13][2] = {
{
0, 0}, {
31, 31}, {
28, 29}, {
31, 31}, {
30, 30}, {
31, 31}, {
30, 30}, {
31, 31}, {
31, 31}, {
30, 30}, {
31, 31}, {
30, 30}, {
31, 31}};
bool isLeap(int year)
{
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main()
{
int time1, y1, m1, d1;
int time2, y2, m2, d2;
while(scanf("%d%d", &time1, &time2) != EOF)
{
if(time1 > time2)
{
int temp = time1;
time1 = time2;
time2 = temp;
}
y1 = time1 / 10000;
m1 = time1 % 10000 / 100;
d1 = time1 % 100;
y2 = time2 / 10000;
m2 = time2 % 10000 / 100;
d2 = time2 % 100;
int ans = 1;
while(y1 < y2 || m1 < m2 || d1 < d2)
{
d1++;
if(d1 == month[m1][isLeap(y1)] + 1)
{
m1++;
d1 = 1;
}
if(m1 == 13)
{
y1++;
m1 = 1;
}
ans++;
}
printf("%d\n", ans);
}
return 0;
}
Los resultados de la operación de muestra son los siguientes: