zoukankan      html  css  js  c++  java
  • “字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛

    A-hzy 和zsl 的生存挑战

    题解:最优策略是A猜B的时候与自己数相同,B猜A的时候与自己数相反。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
        int i;
        for(i=1;i<=4;i++)
            printf("1.00
    ");
        return 0;
    }
    View Code

    B-人类史上最大最好的希望事件

    题解:预处理斐波那契数列暴力求解即可。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define mod 192600817
    using namespace std;
    
    int q,lim,last;
    int n[10005][2];
    long long f[100005],sum[100005];
    int main()
    {
        int i,a,b,c,d;
        while(~scanf("%d",&q))
        {
            for(i=1;i<=q;i++)
            {
                scanf("%d%d%d%d",&a,&b,&c,&d);
                n[i][0]=a*4+b+1;
                n[i][1]=c*4+d+1;
                if(n[i][0]>n[i][1]) swap(n[i][0],n[i][1]);
                lim=max(n[i][1],lim);
            }
            f[1]=1;f[2]=1;
            for(i=max(3,last);i<=lim;i++)
                f[i]=(f[i-1]+f[i-2])%mod;
            for(i=max(1,last);i<=lim;i++)
                sum[i]=(sum[i-1]+f[i]*f[i])%mod;
            for(i=1;i<=q;i++)
                printf("%lld
    ",(sum[n[i][1]]-sum[n[i][0]-1]+mod)%mod);
            last=lim;
        }
        return 0;
    }
    View Code

    C-超级无敌简单题

    题解:对于非鸽子数,发现循环节里的第一个数都是4,其余暴力判断即可。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int q,tot,limk;
    bool v[2500005];
    int f[1500005],k[100005];
    int solve(int  x)
    {
        int ret,tmp;
        ret=0LL;
        while(x)
        {
            tmp=x%10;
            x/=10;
            ret+=(tmp*tmp);
        }
        return ret;
    }
    
    bool pd(long long x)
    {
        while(x!=1&&x!=4)
        {
            if(v[x]) return true;
            x=solve(x);
        }
        return x==1;
    }
    int main()
    {
        int i;
        v[1]=true;
        f[tot=1]=1;    
        scanf("%d",&q);
        for(i=1;i<=q;i++)
            scanf("%d",&k[i]);
        limk=k[1];
        for(i=2;i<=q;i++)
            limk=max(limk,k[i]);
        for(i=2;i<=1200000;i++)
            if(pd(i))
            {
                v[i]=true;
                f[++tot]=i;
                if(tot==limk) break;
            }
        for(i=1;i<=q;i++)
            printf("%d
    ",f[k[i]]);
        return 0;
    }
    View Code

    G-简单数学题

    题解:$i imes binom{n}{i}=n imes binom{n-1}{i-1}$,之后就是差比数列求和了。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define mod 1000000007
    using namespace std;
    long long n;
    long long quick_pow(long long a,long long b)
    {
        long long ret=1,base=a;
        while(b)
        {
            if(b&1) ret=ret*base%mod;
            base=(base*base)%mod;
            b>>=1;
        }
        return ret;
    }
    long long solve()
    {
        long long ans;
        ans=((n-1)%mod*quick_pow(2,n)%mod+1)%mod;
        return ans;
    }
    int main()
    {
        while(~scanf("%lld",&n))
            printf("%lld
    ",solve());
        return 0;
    }
    View Code

    H-zyb的面试

    题解:模拟一个十叉树,乱搞即可。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int t,n,k;
    int solve(int n, int k) 
    {
        int cur,step,l,r;
        cur=1;k--;
        while(k>0) 
        {
            step=0,l=cur,r=cur+1;
            while(l<=n) 
            {
                step+=min(n+1,r)-l;
                l*=10;
                r*=10;
            }
            if(step<=k) cur++,k-=step;
            else cur*=10,k--;
        }
        return cur;
    }
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&n,&k);
            printf("%d
    ",solve(n,k));    
        }
        return 0;
    }
    View Code

    J-Count

    题解:矩阵快速幂

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define mod 123456789
    using namespace std;
    int t;
    long long n;
    struct matrix
    {
        int n,m;
        long long a[10][10];
    }m1,m2;
    matrix mul(matrix a,matrix b)
    {
        int i,j,k;
        matrix c;
        c.m=a.m;
        c.n=a.n;
        memset(c.a,0,sizeof(c.a));
        for(i=1;i<=c.n;i++)
            for(j=1;j<=c.m;j++)
                for(k=1;k<=c.n;k++)
                    c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod;
        return c;
    }
    matrix qpow(matrix a,long long k)
    {
        int i,j;
        matrix c;
        c.m=a.m;
        c.n=a.n;
        for(i=1;i<=min(c.n,c.m);i++)
            c.a[i][i]=1;
        for(i=1;i<=c.n;i++)
            for(j=1;j<=c.m;j++)
                if(i!=j) c.a[i][j]=0;
        while(k)
        {
            if(k&1) c=mul(a,c);
            a=mul(a,a);
            k>>=1;
        }
        return c;
    }
    long long solve(long long n)
    {
        matrix tmp;
        tmp=qpow(m1,n-2);
        tmp=mul(tmp,m2);
        return tmp.a[1][1];
    }
    int main()
    {
        int i,j;
        m1.n=6;m1.m=6;
        m1.a[1][1]=m1.a[1][3]=m1.a[2][1]=m1.a[3][3]=m1.a[3][6]=1;
        m1.a[4][4]=m1.a[4][6]=m1.a[5][5]=m1.a[5][6]=m1.a[6][6]=1;
        m1.a[1][2]=m1.a[4][5]=2;
        m1.a[3][4]=m1.a[3][5]=3;
        
        m2.n=6;m2.m=1;
        m2.a[1][1]=2;
        m2.a[2][1]=1;
        m2.a[3][1]=27;
        m2.a[4][1]=9;
        m2.a[5][1]=3;
        m2.a[6][1]=1;
                
        scanf("%d",&t);
        while(t--)
        {
            scanf("%lld",&n);
            printf("%lld
    ",solve(n));
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [CF833B] The Bakery
    [CF1203F1] Complete the Projects
    [CF354C] Vasya and Beautiful Arrays
    [CF7D] Palindrome Degree
    [CF1466F] Euclid's nightmare
    【转】node-webkit:开发桌面+WEB混合型应用的神器
    (转)background-position—CSS设置背景图片的位置
    (转)国外漂亮表格连接地址
    URL转义
    T-SQL实用查询之常用SQL语句
  • 原文地址:https://www.cnblogs.com/yljiang/p/10551222.html
Copyright © 2011-2022 走看看