2019山东省赛复现补题

D - Game on a Graph

题意:有t个测试样例,给k个人分成两组,在一个n个点m条边的连通图中按顺序轮流取走一条边,那一组导致图无法联通就输了,第一组赢了输出1,第二组赢了输出2

 题解:在n个点的图中,要保持联通至少需要n-1个点,当要取到第n-1条边时就输了。看看是那一组取到第n-1条边就可以判断,最多可以取走x条边(n-x=m-1,x=n-m+1),谁取走下一条边就输了

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    int t;
    cin>>t;
    while(t--){
        int k,n,m,temp,u,v;
        string s;
        cin>>k>>s>>n>>m;
        if(m>=n-1){
            temp=(m-n+1)%k;
        }
        for(int i=1;i<=m;i++){
            cin>>u>>v;
        }
        if(s[temp]=='1'){
            cout<<2<<endl; 
        }else{
            cout<<1<<endl;
        }
    }
    return 0;
} 
View Code

K - Happy Equation

题意:axxa(mod 2p)(ax与xa模2p同余),给a和p求有多少满足条件的x.

题解:令m=2p,m为偶数

   1.当a为奇数时,只有一种情况,a=x时符合

   2.当a为偶数时,设a=2n,则ax=2x * nx,因为ax%m=xa%m,所以x也为偶数。

    1)当x小于p时,单独求满足条件的x;

    2)当x>p时,ax%m=0,则若要满足条件,则xa%m=0,设x=2n*k,则xa=2na * ka;若要(2na * ka)%(2p)==0,就要na>=p;

即n>=p/a(向上取整),求出m以内2n的倍数个数,再减掉x小于p的部分(因为前面单独计算过)

     1)+2)的结果就是最终答案

    (云里雾里,大概是这样吧,真正比赛的时候我应该也做不出来,我就当锻炼锻炼我的脑子吧) 

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
typedef long long ll;
ll  qpow(ll a,ll b,ll mod ){ 
    ll ans =1%mod; 
    while(b){ 
        if(b&1){
            ans=(ans%mod*a%mod)%mod; 
        }
        a=(a%mod*a%mod)%mod;
         b=b>>1;   // b=b/2;
    }
         return  ans;
 }
int main(){
    ios::sync_with_stdio(false);
    int t;
    cin>>t;
    while(t--){
        int a,p;    
        ll counts=0;
        cin>>a>>p;
        if(a&1){
            cout<<1<<endl;
        }else{
            ll mod=pow(2,p);
            for(int i=1;i<=p;i++){
                if(qpow(a,i,mod)%mod==qpow(i,a,mod)%mod){
                    counts++;
                }
            }
            ll temp=ceil(p/(a+0.0));
            ll item=pow(2,temp);
            counts+=mod/item-p/item;
            cout<<counts<<endl;    
        }
    }
    return 0;
}
View Code

 

posted @ 2020-10-03 22:30  Endeavo_r  阅读(133)  评论(0)    收藏  举报