题目跳转:数字统计
题目解析:
这道题目要求统计在给定范围 [L, R] 内所有整数中数字 2 出现的次数。例如,在范围 [2, 22] 中,数字 2 分别在数 2、12、20、21、22 中出现的次数,最终出现了6次。
题目的输入为两个正整数 L 和 R,表示范围的左右边界。输出为数字 2 在给定范围内出现的次数。
求解思路:
针对这个题目,我们可以通过以下思路来解决:
- 遍历范围内的每个整数,对每个整数进行数字 2 的统计。
- 对每个整数,通过取余和整除操作,依次判断每一位数字是否为 2。
根据题目给出的范围限制,可以通过直接遍历范围内的每个整数来统计数字 2 的出现次数。
注意:同学们刚开始写代码思路卡着很正常,但不要养成复制别人代码的习惯,可能你能明白能看懂,那你自己的代码还维护吗?学会学习别人的思路,然后再去优化自己的代码,才能进步!!!每个人的代码都是不一样的,就像独一无二的你一样!加油!
优雅的python申请出战:
L, R = map(int, input().split()) # 输入范围的左右边界
count = 0for num in range(L, R+1):count += str(num).count('2') # 统计数字 2 的出现次数print(count) # 输出数字 2 的总出现次数
c语言版:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main() {int L, R;scanf("%d %d", &L, &R); // 输入范围的左右边界int count = 0;for (int num = L; num <= R; num++) {char str[10]; // 用于存储整数的字符串形式sprintf(str, "%d", num); // 将整数转换为字符串for (int i = 0; i < strlen(str); i++) {if (str[i] == '2') {count++; // 统计数字 2 的出现次数}}}printf("%d\n", count); // 输出数字 2 的总出现次数return 0;
}
c++版:
#include <iostream>
#include <string>int main() {int L, R;std::cin >> L >> R; // 输入范围的左右边界int count = 0;for (int num = L; num <= R; num++) {std::string str = std::to_string(num); // 将整数转换为字符串for (size_t i = 0; i < str.length(); i++) {if (str[i] == '2') {count++; // 统计数字 2 的出现次数}}}std::cout << count << std::endl; // 输出数字 2 的总出现次数return 0;
}
java求解:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int L = scanner.nextInt();int R = scanner.nextInt(); // 输入范围的左右边界int count = 0;for (int num = L; num <= R; num++) {String str = String.valueOf(num); // 将整数转换为字符串for (int i = 0; i < str.length(); i++) {if (str.charAt(i) == '2') {count++; // 统计数字 2 的出现次数}}}System.out.println(count); // 输出数字 2 的总出现次数scanner.close();}
}