爆 0 求条
查看原帖
爆 0 求条
947873
RedWen_shuo楼主2024/8/22 20:56
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
template<typename T>void re(T&x){x = 0; int sign = 1; char c; do{c = getchar(); if(c == '-') sign = -1;}while(!isdigit(c)); do{x = x * 10 + c - '0'; c = getchar();}while(isdigit(c)); x *= sign;}
void write(int x){if (x < 0) putchar('-'); else if (x < 10) putchar(x + '0'); else write(x / 10), putchar(x % 10 + '0');}

const int N = 20;
int l, r, a[N];
int dfs(int now, bool k1, int k2){
	if (now == 0) return 1;
	int t = k1 ? 9 : a[now];
	int ans = 0;
	for (int i = 0; i <= t; i ++){
		if (i == k2 + 1 || i == k2 - 1 || i == k2) continue;
		else ans += dfs(now - 1, k1 || (i != t), i);
	}
	return ans;
}
int solve(int x){
	memset(a, 0, sizeof a);
	int len = 0;
	while (x){
		a[++ len] = x % 10;
		x /= 10;
	}
	return dfs(9, 0, 114514);
}
int main(){
	re(l), re(r);
	printf("%lld", solve(r) - solve(l - 1));
	return 0;
}
2024/8/22 20:56
加载中...