总结-
A-开始觉得是找规律,最开始模拟当时我觉得如果L达到1e9的范围的话,岂不是要加1e9次,模拟也就没有认真写,现在想来,后面由于加的不再是1,而是我前面的值,这样相当了一个斐波那契的类型,而斐波那契的增子速度是非常快的,因此时间复杂度并不是太高。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#define ll long long
using namespace std;
int flag[];
int cnt=;
int l;
void cmp(int x,int y,int z){
if (x>l){
flag[cnt++]=z;
return;
}else {
if (x>=y){
cmp(y+x,x,!z);
}else if (x<y){
if (y%x==){
cmp(y+y,x,!z);
}else {
cmp(y+(y/x+)*x,x,!z);
}
}
}
}
int main(){
int a,b;
while(~scanf("%d%d%d",&a,&b,&l)){
cnt=;
cmp(a,b,);
cmp(b,a,);
if (flag[]==)printf("Yes ");
else printf("No ");
if (flag[]==)printf("Yes\n");
else printf("No\n");
} return ;
}
B-
B题感觉有数位DP的意思,又有点组合数学的意思。
这个选择不重合的意思在我看来就是我选出组成msc 和 mcc的位置不能重合,我们可以这么想,我们要
出现组成msc和mcc的问题,那么如何进行操作???选择一段区间,里面一定有大于等于2个m,大于一个s
大于等于3个c,想办法搞搞。。。
或者说,区间内部。。。不过暂时没有想出来,暂时留坑。