博客园。
我们会发现,\(2\) 和 \(3\) 的火柴个数是一样的,\(9\) 和 \(0\) 的火柴个数是一样的。
所以只有在 \(12\) 到 \(13\) 这样是合法的,自己推一下可以知道,最多只有连续两个。
而在 \(l\) 到 \(r\) 的长度大于 \(9\) 的时候可以直接输出 \(2\)。
剩下的情况直接暴力枚举即可。
#define int unsigned long long
const int mod = 1e9+7;
//const int mod = 998244353;
const int inf = 0x3f3f3f3f,N = 2e5+5,M = 2e5+5;
const ll linf = 0x3f3f3f3f3f3f3f3f;
int l,r;
int tmp[15]={6,2,5,5,4,5,6,3,7,6};
void solve(){
cin >> l >> r;
if(r-l > 9) cout << 2;
else {
for(int i = l+1;i <= r;i++){
int x=i,y=i-1;
int cnt1=0,cnt2=0;
while(x){
cnt1 += tmp[(x%10)];
x/=10;
}
while(y){
cnt2 += tmp[(y%10)];
y/=10;
}
if(cnt1==cnt2){
cout<<2;
return ;
}
}cout<<1;
}
}
标签:const,R1,int,题解,long,2e5,HCOI
From: https://www.cnblogs.com/gsczl71/p/17924742.html