做题时经常发现奇偶判断

但是你会发现计算机会算很多无意义的东西

所以今天给大家普及一下奇偶判断的优化


rt ,在上一次我讲过,奇偶判断是 nn % 22 来决定的,如果 n>10000000000000n > 10000000000000 是不是数很大,计算机会去除以 2,这么大的数,计算机不就算累了吗?

这个时间复杂度为:O(n)O(n)

时间复杂度 O(n)O(n) 会发现有一条斜线,也就代表 nn 越大,O(n)O(n) 时间复杂度就会越高


那么今天就来做一个小优化,避免一个大于 10000 的数字在担忧

我们先测试几个数据:

456
偶数
745657496576
偶数
111111111
奇数

不难发现,奇偶取决于最后一位

确实,我们发现的多,应该肯定能知道

曾今的 USACO C++ 比赛里就有这道题,n<(1060)n < (10^{60}),这么大的数,不直接 TLE 吗?!


废话不多说,上代码!

Python的:

a = input()
if (int(a[-1]) % 2 == 0):
    print("偶数")
else:
    print("奇数")

c++ 的:

#include <bits/stdc++.h>

using namespace std;

string n;

int main() {
	cin >> n;
	int len = n.size();
	if (((int)n[len-1]-'0') % 2 == 0) {
		printf("偶数");
	} else {
		printf("奇数"); 
	}
	return 0;
} 

这个 a[-1] 不懂的,李尧老师 3 级讲了(就是字符串的末尾嘛。、。。。)

这样!我们的计算机就只会去算最后一位,就不用管很多啦

3 条评论

  • 1