洛谷:P1980
OJ: P4941
这段代码的核心思想是逐个数字检查从1到a中的每个数,看看x在其中出现了多少次。对每个数字,它通过不断取模(%10)和整除(/10)操作来检查每一位是否等于x。如果是,就增加计数器c的值。这种方法能准确计算出x在指定区间内出现的次数。
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /**************************************************************** * Description: 2013年普及组第一题:计数问题 * Author: Alex Li * Date: 2022-10-05 21:05:32 * LastEditTime: 2024-01-22 15:02:27 ****************************************************************/ #include <iostream> using namespace std; int main(){ int a, x, c = 0, d, e; cin >> a >> x; // 读入两个整数,a表示区间的上限,x表示要计数的数字 for (int i = 1; i <= a; i++){ // 遍历从1到a的每个整数 e = i; // 将当前数字i赋值给e,用于分解这个数字的各个位 for (int j = 1; j <= 7; j++){ // 假设数字最多有7位,逐位检查 d = e % 10; // 取出数字的最后一位 if(d == x) c++; // 如果这一位等于x,则计数器c加1 e = e / 10; // 移除已经检查过的最后一位 if(e == 0) break; // 如果没有更多的位可以检查,跳出循环 } } cout << c; // 输出数字x出现的总次数 return 0; } |