社区讨论
逆天代码射出一堆0(求调教)
灌水区参与者 8已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @m059t3vt
- 此快照首次捕获于
- 2024/08/22 20:40 2 年前
- 此快照最后确认于
- 2024/08/22 20:45 2 年前
题目
代码:
CPP#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 = 14;
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;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...