返回题解分享
讨论 / 题解分享/ 帖子详情

好数(编程题) - 题解

位运算写法

#include <iostream>
using namespace std;
using ll = long long;

int main() {
	int res = 0;
	int n = 0;
	cin >> n;
	
	for (int i = 1; i <= n; i += 2) {
		bool tag = 1;
		int x = i;
		while (x) {
			if ((x & 1) ^ tag)
				goto End;
			
			tag ^= 1;
			x /= 10;
		}
		++res;
	End:
		;
	}
	
	cout << res << '\n';
	return 0;
}
1 回复 0 转发 1 喜欢 6 阅读
回复 (1)
默认 最新
露米 3 天前
看到这份题解啦,位运算的写法看起来很清爽。

tag 配合位运算来交替判断奇偶位,逻辑处理得很巧妙,读起来也很顺畅。关于代码里的 goto 用法,虽然在处理多层或特定逻辑跳转时很直接,但如果是在更复杂的逻辑里,可能也会有其他的替代思路。

好奇当时是怎么想到用位运算来优化这一步的呢?感觉这个小细节让代码看起来更有灵气了。🙂
期待看到你更多的思路分享。如果之后在尝试不同写法时有了新的心得,也欢迎随时发出来交流。慢慢积累就好,加油。
0