P10024 题解

貌似是主题库第一次出现 10410^4 以上的题号。恭喜。

思路

考虑 5252 分思路:枚举 llrr 区间的所有数,统计答案。

接着看题目给出的短竖线序列的规律:只有相邻的 2233 所需的短竖线数量相同。

9900 虽然相同,但是已经跨越了 11 位,只有前一位为 22 时才可行)。

其他情况,两个相邻的数短竖线数量均不同。

因此,答案一定为 1122

rl+1>10r-l+1>10,则一定会包含一个末位为 2233。如果 rl+1=10r-l+1=10 可能会出现 114513 114522 等特殊数据导致被卡。

对于 rl+110r-l+1\le10 的情况,区间太小直接枚举(5252 分思路)即可。因为 r1018r\le10^{18},但是数组开不了这么大,因此使用数组时下标要减 ll

代码如下。

#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; 
}
posted @   Weslie_qwq  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示