[RC-05] 迷失自我
对于两个只包含 \(7,9\) 的数字串 \(S,T\),如果:
- \(S,T\) 长度均为 \(n\);
- \(S\) 的字典序小于 \(T\);
- 对于任意 \([l_1,r_1]\) 和 \([l_2,r_2]\)(\(1\le l_1\le r_1\le n\),\(1\le l_2\le r_2\le n\),\(l_1,r_1,l_2,r_2\) 为整数,两个区间不相同),设 \(A_S\) 为将 \(S\) 的第 \(l_1\sim r_1\) 个字符顺次排列得到的十进制数,\(A_T\) 为将 \(T\) 的第 \(l_1\sim r_1\) 个字符顺次排列得到的十进制数,\(B_S\) 为将 \(S\) 的第 \(l_2\sim r_2\) 个字符顺次排列得到的十进制数,\(B_T\) 为将 \(T\) 的第 \(l_2\sim r_2\) 个字符顺次排列得到的十进制数,有 \(\gcd(A_S,B_S)=\gcd(A_T,B_T)\)。
那么,就称 \((S,T)\) 是无法辨识的一对。比如,\(S=7977\) 和 \(T=7979\) 不是无法辨识的,因为取 \([l_1,r_1]=[1,4]\),\([l_2,r_2]=[2,2]\),则 \(\gcd(A_S,B_S)=\gcd(7977,9)=3\),\(\gcd(A_T,B_T)=\gcd(7979,9)=1\),有 \(3\ne 1\)。
求长度为 \(n\) 的只含 \(7,9\) 的数字串中有几对无法辨识。你只需求出答案对 \(998244353\) 取模的值。
话说这不是道橙题吗?感觉难度有误。
通过简单的枚举可以发现:
当 \(n\) 大于 \(2\) 时,答案为 \(0\)。
否则答案为 \(1\)。
我们来简单证明一下:
当一个只由 \(7\) 和 \(9\) 组成的字符串的长度大于 \(2\) 时,那么一定有任一个数字出现超过 \(1\) 次,那么这两个重复出现的数字(可以看做区间长度为 \(1\) 的字符串)的 \(\gcd\) 一定等于这个数字。
对于某个字符串,把所有满足 \(\gcd\) 为 \(7\) 和 \(9\) 的长度为 \(1\) 的区间对拿出来组成两个集合,就可以确定一个字符串。
AC 代码:
#include <iostream>
using namespace std;
int main(void)
{
int T;
cin >> T;
while(T--)
{
long long n;
cin >> n;
if(n <= 2)
{
cout << 1 << endl;
}else{
cout<<0<<endl;
}
}
return 0;
}

浙公网安备 33010602011771号