[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;
}
posted @ 2021-08-17 12:09  Coros_Trusds  阅读(70)  评论(0)    收藏  举报