AcWing 338. 计数问题
2024-08-24 05:48:59
#include <iostream>
#include <algorithm>
#include <vector> using namespace std; const int N = ; /* 001~abc-1, 999 abcxegf
1. num[i] < x, 0
2. num[i] == x, 0~efg
3. num[i] > x, 0~999 */ int get(vector<int> num, int l, int r) {//求前面这些位组成的数字是多少
int res = ;
for (int i = l; i >= r; i -- ) res = res * + num[i];
return res;
} int power10(int x) {//求10的i次方
int res = ;
while (x -- ) res *= ;
return res;
} int count(int n, int x) {//1到n当中,x出现的次数
if (!n) return ;
vector<int> num;//每一位
while (n) {
num.push_back(n % );
n /= ;
}
n = num.size();
int res = ;
for (int i = n - - !x ; i >= ; i -- ) {
//判断是否是在枚举最高位
if (i < n - ) {
// i前面所有这些位数
res += get(num, n - , i + ) * power10(i);
if (!x) res -= power10(i);
}
if (num[i] == x) res += get(num, i - , ) + ;
else if (num[i] > x) res += power10(i);
} return res;
} int main() {
int a, b;
while (cin >> a >> b , a) {
if (a > b) swap(a, b); for (int i = ; i <= ; i ++ )
cout << count(b, i) - count(a - , i) << ' ';
cout << endl;
} return ;
}
最新文章
- Linux(Centos)快速搭建SVN
- String常用方法测试
- .gitignore失效问题解决
- Python垃圾回收机制
- ACCESS自动编号清零
- hdu4508 完全背包,湫湫系列故事——减肥记I
- Httptunnel教程
- 黄聪:《跟黄聪学WordPress主题开发》
- 在Eclipse中制作SSH配置文件提示插件
- IOS 按比例裁剪图片
- Android 混淆与混淆过滤
- 【BZOJ1030】文本生成器
- 保留脚本中变量(dot)
- 1.redis.3.2 下载,安装、配置、使用 - 1
- jq的事件冒泡
- POJ2796(单调栈)
- 【学习总结】GirlsInAI ML-diary day-11-while循环
- 自学Python4.2-装饰器
- springboot邮件发送与接收读取
- IE浏览器Web自动化