1 条题解

  • 0
    @ 2025-8-24 22:13:54

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Alarm5854
    Stop Smoking!

    搬运于2025-08-24 22:13:54,当前版本为作者最后更新于2020-02-26 21:26:24,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    其实我是来推销我的新博客的(感谢@rui_er):https://yce3216037.github.io/post/luo-gu-p5737-ti-jie/

    这道题目相信大家一点会有一个思路,就是直接一年一年的判断闰年,函数如下:

    inline bool judge(int x) {
        if (x % 4) return 0;
        if (!(x % 100) && x % 400) return 0;
        return 1;
    }
    

    但是,事实上,不需要一年一年的判断,因为只有4的倍数的年份才可能为闰年,所以可以4年4年判断,注意当这一年为100的倍数但不是400的倍数时,这年不是闰年。

    代码如下:

    #include<cstdio>
    using namespace std;
    const int N = 3000 + 10;
    FILE *fin, *fout;
    inline int read(int &x) {//快读(虽然没什么用)
    	char c = 0; int f = x = 0;
    	while (c < 48 || c > 57) {
    		if (c == -1) return 0;
    		if (c == '-') f = 1; c = fgetc(fin);
    	}
    	while (c > 47 && c < 58) x = (x << 3) + (x << 1) + (c & 15), c = fgetc(fin);
    	if (f) x = -x; return 1;
    }
    template<class T, class... Args> inline int read(T &x, Args&... args) {
    	return read(x) + read(args...);
    }
    inline int write(int x) {
    	if (x < 0) return fputc(45, fout), write(-x);
    	if (x > 9) write(x / 10);
    	return fputc((x % 10) | 48, fout), 1;
    }
    inline int write(char c) {
    	return fputc(c, fout), 1;
    }
    template<class T, class... Args> inline int write(T x, Args... args) {
    	return write(x) + write(args...);
    }
    int l, r, cnt, a[N];
    signed main() {
    	#ifdef ONLINE_JUDGE
    	fin = stdin;
    	fout = stdout;
    	#else
    	fin = fopen("P5737.in", "rb");
    	fout = fopen("P5737.out", "wb");
    	#endif
    	read(l, r);
    	while (l & 3) ++l;//让l成为4的倍数
    	while (l <= r) {//如果l>r了,就直接跳出循环
    		if (!(l % 100) && l % 400) {
    			l += 4;
    			continue;
    		}
    		a[++cnt] = l, l += 4;
    	}
    	write(cnt, '\n');
    	for (int i = 1; i <= cnt; ++i) write(a[i], ' ');
    	return 0;
    }
    
    • 1

    信息

    ID
    4715
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者