1)求日期之间间隔
做法为模拟到2019.1.1的天数,需要小心的是
1 月份减一的位置
2 由于题目数据范围没有闰年,所以代码没有考虑闰年
3 数据大可能时间超限
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int y, m, d, y1, m1, d1;
int sum1 = 0, sum2 = 0;
int main() {
scanf("%d/%d/%d", &y, &m, &d);
scanf("%d/%d/%d", &y1, &m1, &d1);
while (y != 2019) {
while (m != 1) {
if (d != 0) {
sum1 += d;
d = 0;
}
m--;
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
sum1 += 31;
}
else if (m == 4 || m == 6 || m == 9 || m == 11) {
sum1 += 30;
}
else {
if (m == 2) {
sum1 += 28;
}
}
}
y--;
m = 12;
d = 31;
}
while (y1 != 2019) {
while (m1 != 1) {
if (d1 != 0) {
sum2 += d1;
d1 = 0;
}
m1--;
if (m1 == 1 || m1 == 3 || m1 == 5 || m1 == 7 || m1 == 8 || m1 == 10 || m1 == 12) {
sum2 += 31;
}
else if (m1 == 4 || m1 == 6 || m1 == 9 || m1 == 11) {
sum2 += 30;
}
else {
if (m1 == 2) {
sum2 += 28;
}
}
}
y1--;
m1 = 12;
d1 = 31;
}
printf("%d", sum1 - sum2);
return 0;
}
2)Mirror Grid
将矩阵分为四块,每块相同编号位置对应应该相同(这样即可满足四面相同),最优解为取01相互变化操作次数最少的加入sum,即min(k,4-k)
原点:(x,y)
顺指针旋转90度:(y,n - x + 1)
顺指针旋转180度:(n - x + 1,n - y + 1)
顺指针旋转270度:(n - y + 1,x)