给80分~0分的提个醒

P2010 [NOIP2016 普及组] 回文日期

gayh20 @ 2017-09-24 10:58:44

  1. 核心代码:
bool rn(int k){
    if((k%4==0&&k%100!=0)||k%400==0)return 1;
    else return 0;
}
bool rq(int k){
    if(k/10000<1000)return 0;
    if(k/10000>=10000)return 0;
    if(k/100%100>12)return 0;
    if(!(rn(k/10000))&&k/100%100==2&&k%100>=29)return 0;
    if(rn(k/10000)&&k/100%100==2&&k%100>=30)return 0;
    if(k%100>=32)return 0;
    if((k/100%100==4||k/100%100==6||k/100%100==9||k/100%100==11)&&k%100>=31)return 0;
    if(k%100==0)return 0;
    if(k/100%100==0)return 0;
    return 1;
}
  1. 解法

解法1:直接暴力枚举两个之间的所有日期,复杂度 O(kN) (k较大),超时。得分80分。

解法2:只枚举年份,日期根据回文来构造,复杂度 O(kN/10000) (k比上面稍小)。通过。得分100分。

解法3:只枚举日期,年份根据回文来构造,复杂度 O(k*(1231-101)) (k与解法二大致相同)。通过。得分100分。


by 览遍千秋 @ 2017-09-24 12:05:19

可是我暴力枚举日期AC啊


by 阿也 @ 2017-09-24 16:27:19

@kaiming 求代码求代码


by CA_HL_AC @ 2017-10-02 10:16:46

Hu Quan Jie, GuangGu ShangQuan, Hongshan Qu, Wuhan Shi, Hubei Sheng, China, Hu Quan Jie, GuangGu ShangQuan, Hongshan Qu, Wuhan Shi, Hubei Sheng, China, Hu Quan Jie, GuangGu ShangQuan, Hongshan Qu, Wuhan Shi, Hubei Sheng, China, 430073


by 0Koto @ 2017-10-11 07:37:23

1.1.1到9999.12.31也就2958098天(日期计算器算的)O(n)复杂度才10e6,你告诉我T在哪。。。你那机子是啥年代的。。。


|