代码优化建议:
1. 避免使用#include <bits/stdc++.h>,它是非标准的头文件,不建议在正式的项目中使用。应该根据需要包含具体的标准头文件,如<iostream>和<string>。
2. 尽量避免在循环中使用cin和cout,这会导致频繁的输入输出操作,影响程序的性能。可以考虑使用scanf和printf进行输入输出。
3. 使用算法和数据结构进行优化,而不是直接暴力遍历。在本题中,可以通过数学方法来计算每个区间内数字中包含数字'2'的个数。
4. 在循环之前进行预处理,将每个数字的字符串表示存储在数组中,避免在循环内部重复计算字符串。
综上所述,以下是经过优化的代码:#include <iostream>#include <vector>using namespace std;int countTwo(int num) { int count = 0; while (num > 0) { if (num % 10 == 2) count++; num /= 10; } return count;}int main() { int n, m; cin >> n >> m; vector<string> nums(n + 1); for (int i = 1; i <= n; i++) { nums[i] = to_string(i); } for (int i = 0; i < m; i++) { int l, r; scanf("%d %d", &l, &r); int res = 0; for (int j = l; j <= r; j++) { res += countTwo(j); } cout << res << endl; } return 0;}
这段代码通过使用数学方法和预处理的方式进行优化。在循环之前将每个数字的字符串表示存储在数组中,避免在循环内部重复计算。并且使用countTwo函数计算每个数字中包含数字'2'的个数。这样可以大大减少循环的次数,提高程序的效率。
球一个最佳答案谢谢啦!这对我非常重要! |