zoukankan      html  css  js  c++  java
  • 【CQ18高一暑假前挑战赛1】标程

    【A】

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll qpow(ll a,ll x,ll Mod){
        a%=Mod; ll res=1;
        while(x){
            if(x&1) res=res*a%Mod;
            a=a*a%Mod;
            x>>=1;
        } return res;
    }
    int main()
    {
        ll a,b,c;
        cin>>a>>b>>c;
        a=qpow(a,b,c);
        cout<<a<<endl;
        return 0;
    }

    【B】

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    int main()
    {
        ll N,ans;
        cin>>N;
        ans=N;
        ans-=N/2;
        ans-=N/3;
        ans-=N/5;
        ans-=N/7;
        
        ans+=N/(2*3);
        ans+=N/(2*5);
        ans+=N/(2*7);
        ans+=N/(3*5);
        ans+=N/(3*7);
        ans+=N/(5*7);
        
        ans-=N/(2*3*5);
        ans-=N/(2*5*7);
        ans-=N/(3*5*7);
        ans-=N/(2*3*7);
        
        ans+=N/(2*3*5*7);
        cout<<ans<<endl;
        return 0;
    }

    【C】

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1010;
    char c[maxn]; 
    int dp[maxn][maxn];
    int main()
    {
        scanf("%s",c+1);
        int L=strlen(c+1),i,j;
        for(i=L;i>=1;i--){
            for(j=i;j<=L;j++){
                if(j-i+1==0) dp[i][j]=0;
                else if(j-i+1==1) dp[i][j]=(c[i]==c[j]?0:1);
                else {
                    dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1;
                    if(c[i]==c[j]) dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
                }
            }
        }
        cout<<dp[1][L]<<endl;
        return 0;
    }

    【D】

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=100010;
    int a[maxn],rt[maxn],cnt;
    struct node{
        int l,r,val;
        node(){ l=r=val=0; }
        node(int L,int R,int V):l(L),r(R),val(V){}
    }s[maxn*20];
    void add(int &now,int pre,int x,int pos)
    {
        now=++cnt;
        s[now]=node(s[pre].l,s[pre].r,s[pre].val+1);
        if(pos==-1) return ;
        if(((x>>pos)%2)==0) add(s[now].l,s[pre].l,x,pos-1);
        else add(s[now].r,s[pre].r,x,pos-1);
    }
    int query(int now,int pre,int x)
    {
        int res=0;
        for(int i=30;i>=0;i--){
            int t=(x>>i)%2;
            if(t==0){
                if(s[now].r&&s[s[now].r].val-s[s[pre].r].val>0) now=s[now].r, pre=s[pre].r, res+=(1<<i);
                else if(s[now].l) now=s[now].l, pre=s[pre].l;
                else break;
            }
            if(t==1){
                if(s[now].l&&s[s[now].l].val-s[s[pre].l].val>0) now=s[now].l, pre=s[pre].l, res+=(1<<i);
                else if(s[now].r) now=s[now].r, pre=s[pre].r;
                else break;
            }
        }
        return res;
    }
    int main()
    {
        int N,Q,L,R,x,i;
        scanf("%d%d",&N,&Q);
        for(i=1;i<=N;i++){
            scanf("%d",&a[i]);
            add(rt[i],rt[i-1],a[i],30);
        }
        for(i=1;i<=Q;i++){
            scanf("%d%d%d",&x,&L,&R);
            int ans=query(rt[R+1],rt[L],x);
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    Svn如何使用,有什么作用?
    Unity脚本基础Day02
    unity设计模式-----责任链模式
    LitJson ---json的创建和解析
    Mesh编程——三角形,多边形,正方体,园形,圆环
    unity基础逻辑题
    unity——UI拖拽实现拼图
    unity:倒计时
    UGUI Toggle的监听事件绑定
    UnityGUI系统之InputField
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9128910.html
Copyright © 2011-2022 走看看