acwing 466
提供一种不同于yxc大佬的方法
时间复杂度:O(366)
我们枚举月和日
用月和日算出年和日期
#include<bits/stdc++.h>
using namespace std;
int a, b;
long long cnt = 0;
int days[] = {-1, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main(){
scanf("%d %d", &a, &b);
for(int month = 1; month <= 12; month ++){
for(int day = 1; day <= days[month]; day ++){
int year = 1000 * (day % 10) + 100 * (day / 10) + 10 * (month % 10) + month / 10;
int date = 10000 * year + 100 * month + day;
if(date >= a && date <= b) cnt ++;
}
}
printf("%d\n", cnt);
return 0;
}
大佬,问一下闰年是怎么考虑的?
2月29 构造出来的回文年份 9220 刚好是闰年 每个构造出的回文年份基本都是一一对应的 所以不需要考虑闰年
9220刚好闰年。。。。
应该闰年和平年是一起看的,特殊的只有2月29日的话会构成92200229,是回文,并且正好9220是闰年,符合要求,就不用特别考虑闰年和平年2月天数不同的情况了
这个方法真的妙
图片是怎么发出来的
latex
想了好一会儿终于知道为啥通过月日就可以解决这道题了,谢谢大佬(膜拜)
妙啊
48行的代码
逆天了
强强强啊!!!
orz
%%%
为什么没有28呢,82200228不也是个回文数吗
好像循环里自动会遍历到28吧
8220是闰年
强 好方法
太强了吧!!!
好像cnt 取 int 就可以了
对,因为输入只有两个日期,不过开 long long 是个好习惯
厉害
牛,真的牛
年这个咋算的有点看不懂。。
总共8位是对称的,前4位(年)可用后四位(月、日)计算得出
orz
orz
orz!!!
tal