zhi识点
1.常用思路:当我们要求一个区间中的答案的时候,如果不是很好算,我们可以转化成求一个前缀的答案,然后两个相减就可以了,注意可能会有偏移量:例如:a[hkx] = a[r] - a[l - 1];
2.计数DP的思想,分情况讨论
3.方法一:举例子
方法二:写暴力对比法(force)
4.这个史上第二大翻车,在34:30笑死我了
5.x%10相当于求出x的最后一位
6.学会口头禅:相当的push
#include <bits/stdc++.h>
#define N 11
using namespace std;
int get(vector<int> num, int l, int r)
{
int res = 0;
for(int i = l; i >= r; -- i) res = res * 10 + num[i];
return res;
}
int count(int n, int x)
{
if(!n) return 0;
vector<int> num;
while(n)
{
num.push_back(n % 10);
n /= 10;
}
n = num.size();
int res = 0;
for(int i = n - 1 - !x; i >= 0; -- i)
{
if(i < n - 1)
{
res += get(num, n - 1, i + 1) * pow(10, i);
if(!x) res -= pow(10, i);
}
if(num[i] == x) res += get(num, i - 1, 0) + 1;
else if(num[i] > x) res += pow(10, i);
}
return res;
}
int main()
{
int a, b;
while(cin >> a >> b , a || b)
{
if(a > b) swap(a, b);
for(int i = 0; i <= 9; ++ i)
cout << count(b, i) - count(a - 1, i) << ' ';
cout << endl;
}
}