「HCOI-R1」报名人数 题解

发布时间 2023-12-24 19:17:15作者: gsczl71

博客园

我们会发现,\(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;
	}
}