NOIP提高组模拟赛加2


又双叒叕考炸了。。。

A. 光

我好像也被叫做光来着

这题,怎么说呢,不能说恶心,只能说非常恶心。

他是个大模拟!!!!

心态都打炸了,最后取得了\(0\)分好成绩

代码能力差,而且读题有问题,没有特别注意方向。。

这题思路比较简单,情况有点多,大力讨论吧。

码量还好,也就\(57\)(\(loj\)标准格式\(209\)行,不要问我为什么这么丧心病狂)

code
#include
#include
#include
using namespace std;
const int maxn=1000005;
int n,m,k,sc[maxn],sh[maxn],sx[maxn],sy[maxn];
struct node{int x,y,idc,idh,idx,idy;}d[maxn];
bool vis[maxn][4];
long long ans=1;
char cc[5];
bool cmp_c(int x,int y){return d[x].x-d[x].y!=d[y].x-d[y].y?d[x].x-d[x].y

B. visit

水题,本来以为是\(exlucas\),其实只是\(lucas\)

\(T1\)时间用的有点多,不过还是比较明智的弃掉了。

但是!!但是!!!数组两维空间开反了!!没有开\(long long\)

\(100->60\)........

可恶。然而。

关于答案的求法,我觉得非常显然(不考虑优化的最简狮子)

所以这里不再赘述

code
#include
#include
#include

using namespace std;
#define int long long
typedef long long ll;
const int maxn=100005;
int T,mod,n,m;
int p[105],cnt;
int fac[105][maxn],inv[105][maxn];
ll ans;

int qpow(ll x,int y){
    ll ans=1;
    for(;y;y>>=1,x=x*x%mod)if(y&1)ans=ans*x%mod;
    return ans%mod;
}

void pre(){
    int x=mod;
    for(int i=2;i*i<=x;++i)
    if(x%i==0){p[++cnt]=i;x/=i;}
    if(x!=1)p[++cnt]=x;
    for(int k=1;k<=cnt;++k){
        fac[k][0]=1;
        int up=min(p[k],maxn);
        for(int i=1;ix)return 0;
    if(x==y||x==0||x==1)return 1;
    if(x