BC116. [NOIP2013]记数问题
描述
输入描述
输入共1行,包含2个整数n、x,之间用一个空格隔开。输出描述
输出共1行,包含一个整数,表示x出现的次数。示例1
输入:
11 1
输出:
4
C 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2022-05-05
#include <stdio.h> int main() { int num = 0; int F = 0; int loc = 1; int cnt = 0; scanf("%d%d", &num, &F); while(loc <= num) { int left = num / loc / 10; int right = num % loc; int cur = num / loc % 10; if (F) { cnt += left * loc; } if (!F && left) { cnt += (left - 1) * loc; } if (cur > F && (F || left)) { cnt += loc; } if (cur == F && (F || left)) { cnt += right + 1; } loc *= 10; } printf("%d", cnt); }
C 解法, 执行用时: 3ms, 内存消耗: 332KB, 提交时间: 2022-08-01
#include <stdio.h> int main() { int num = 0; int F = 0; int loc = 1; int cnt = 0; scanf("%d%d", &num, &F); while(loc <= num) { int left = num / loc / 10; int right = num % loc; int cur = num / loc % 10; if (F) { cnt += left * loc; } if (!F && left) { cnt += (left - 1) * loc; } if (cur > F && (F || left)) { cnt += loc; } if (cur == F && (F || left)) { cnt += right + 1; } loc *= 10; } printf("%d", cnt); }
C++ 解法, 执行用时: 3ms, 内存消耗: 396KB, 提交时间: 2022-07-22
#include<iostream> using namespace std; int main() { int n, x; cin >> n >> x; int loc = 1, cnt = 0; while(loc <= n) { int left = n / loc / 10; int right = n % loc; int cur = n / loc % 10; if(x) cnt += left * loc; if(!x && left) cnt += (left-1)*loc; if(cur > x && (x || left)) cnt += loc; if(cur == x && (x || left)) cnt += right + 1; loc *= 10; } cout << cnt; }
C++ 解法, 执行用时: 3ms, 内存消耗: 412KB, 提交时间: 2022-02-25
#include <bits/stdc++.h> using namespace std; int main() { int n, x; cin >> n >> x; int loc = 1, cnt = 0; while(loc <= n) { int left = n / loc / 10; int right = n % loc; int cur = n / loc % 10; if(x) cnt += left * loc; if(!x && left) cnt += (left-1)*loc; if(cur > x && (x || left)) cnt += loc; if(cur == x && (x || left)) cnt += right + 1; loc *= 10; } cout << cnt; }
C++ 解法, 执行用时: 3ms, 内存消耗: 416KB, 提交时间: 2022-03-04
#include <bits/stdc++.h> using namespace std; int main() { int n, x; cin >> n >> x; int loc = 1, cnt = 0; while(loc <= n) { int left = n / loc / 10; int right = n % loc; int cur = n / loc % 10; if(x) cnt += left * loc; if(!x && left) cnt += (left-1)*loc; if(cur > x && (x || left)) cnt += loc; if(cur == x && (x || left)) cnt += right + 1; loc *= 10; } cout << cnt; }