P10024 题解
貌似是主题库第一次出现 以上的题号。恭喜。
思路
考虑 分思路:枚举 至 区间的所有数,统计答案。
接着看题目给出的短竖线序列的规律:只有相邻的 、 所需的短竖线数量相同。
(、 虽然相同,但是已经跨越了 位,只有前一位为 时才可行)。
其他情况,两个相邻的数短竖线数量均不同。
因此,答案一定为 或 。
若 ,则一定会包含一个末位为 、。如果 可能会出现 114513 114522 等特殊数据导致被卡。
对于 的情况,区间太小直接枚举( 分思路)即可。因为 ,但是数组开不了这么大,因此使用数组时下标要减 。
代码如下。
#include<iostream>
using namespace std;
int a[10]={6,2,5,5,4,5,6,3,7,6};
long long l,r;
int ans[10000005];
int maxans=0,realans=0;
int main() {
cin>>l>>r;
if((r-l)>10)cout<<2;
else {
for(long long i=l; i<=r; i++) {
long long j=i;
while(j) {
ans[i-l]+=a[j%10];
j/=10;
}
}
for(long long i=l+1; i<=r; i++) {
// cout<<ans[i-l]<<' ';
if(ans[i-l]==ans[i-1-l])realans++;
else {
maxans=max(maxans,realans);
realans=0;
}
}
cout<<maxans+1;
}
return 0;
}

浙公网安备 33010602011771号