P7817 [RC-05] 迷失自我 题解
这道题在比赛中是第一题,所以理论上讲并不算很难,但看到题面,心中不免有些颤动。再看测试数据,一个测试点
题目传送门
思路
-
对于第一个测试点,考虑了一下,直接暴力搜索,可以
很轻松地拿到2 分。 -
对于第二个测试点,很显然第一种策略肯定是不行的,所以要换一种思维方式,因为字符串
S 和T 都只是由7 或9 组成的,所以对于任意一个长度大于2 的字符串,串中一定存在一个数的出现次数大于1 ,所以不难发现,两个重复出现的数的最大公约数一定等于这个这个数,这两个重复出现的数字也可以看做长度为1 的区间。因此,可以把串中所有满足最大公约数为7 和9 并且长度为1 的区间对拿出来组成两个集合,这两个集合就可以唯一确定这个串(不明白的可以自己举个例子写一下)。
所以对于一个长度小于
Code
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
inline long long read()
{
long long s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
long long n,t;
void work()
{
n=read();
if(n>2)
cout<<0<<endl;
if(n<=2)
cout<<1<<endl; //推出的结果
}
int main()
{
t=read();
while(t--)
work();
return 0;
}
对于这道题,收获还是蛮多的~~