• Wannafly挑战赛17


    链接:https://www.nowcoder.com/acm/contest/114/A
    来源:牛客网

    A走格子

    在平面上有n*n大小的正方形,定义正方形左下角坐标是(1,1),右下角坐标是(n,1)

    现在A君在左下角,他的初始方向是向右,他要在正方形内走m步

    当A君碰到边界或者已经走过的格子时,他便会逆时针转90°继续走,直到走完m步。
    现在给你两个整数n和m,请算出走完m步后A君的坐标。
     
     
    虽然知道模拟题,竟然一直没有想到做题方法。。。
    只需要定义一个f数组,如果f=1的话直接转90度走就行了
    开始先将周围标成f=1
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    const int maxn=2000+100;
    
    int n,m;
    int X[4]={1,0,-1,0};
    int Y[4]={0,1,0,-1};
    int f[maxn][maxn];
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin>>n>>m;
        memset(f,0,sizeof(f));
        f[1][1]=1;
        for(int i=0;i<=n+1;i++)
        {
            f[0][i]=1;
            f[n+1][i]=1;
            f[i][0]=1;
            f[i][n+1]=1;
        }
        int step=0;
        int x=1,y=1;
        int dir=0;
    
        while(step<m)
        {
            step++;
            int newx=x+X[dir];
            int newy=y+Y[dir];
            if(f[newx][newy]==1)
            {
                dir=(dir+1)%4;
                x+=X[dir];
                y+=Y[dir];
            }
            else{
                x=newx;y=newy;
            }
            f[x][y]=1;
        }
        printf("%d %d
    ",x,y);
    
        return 0;
    }

    B-求值2

    链接:https://www.nowcoder.com/acm/contest/114/B
    来源:牛客网

    Ans = 0; 
    For(inti = 1; i <= n; i++) 
        For(int v = 0; v <= n; v++) 
            Ans = (Ans + C(i, v) * C(i, v)) % 998244353;
    C(i,v)为组合数第i行第v列的数。
    给你上面的代码中的n,请你输出Ans的值。

     

    组合数题,运用组合数模板就可以啦,数组开小了结果导致一直wa。。。

    记住公式C(n,1)^2+C(n,2)^2+...+C(n,n)^2=C(2n,n)

    #include <iostream>
      
    using namespace std;
      
    typedef long long LL;
      
    const int maxn=2e6+100;
    const LL mod= 998244353;
      
    LL ans=0,n;
    LL fact[maxn],fiv[maxn];
      
    LL quickM(LL base, LL b)
    {
        LL ans = 1;
        while(b)
        {
            if(b&1) ans = (ans * base) % mod;
            base = (base*base) % mod;
            b >>= 1;
        }
        return ans%mod;
    }
    void init()
    {
        fact[0] = 1;
        for(int i = 1; i <= maxn; ++i)
        fact[i] = fact[i-1]*i%mod;
        fiv[maxn] = quickM(fact[maxn], mod-2)%mod;
        for(int i = maxn; i >= 0; --i)
        {
            fiv[i-1] = fiv[i]*(i);
            fiv[i-1] %= mod;
        }
    }
    LL C(int n, int m)
    {
        if(m > n) return 0;
        if(m==0) return 1;
        return (fact[n]*fiv[n-m]%mod*fiv[m]%mod)%mod;
    }
      
    int main()
    {
        ios::sync_with_stdio(false);
        init();
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            ans=(ans+fact[i*2]*fiv[i]%mod*fiv[i]%mod)%mod;
        }
        cout<<ans%mod<<endl;
        return 0;
    }
  • 相关阅读:
    MVC设置默认页面
    MySQL_DBA整理
    解决git提交敏感信息(回退git版本库到某一个commit)
    并发数计算
    高并发下的 Nginx 优化与负载均衡
    PassengerNginxdebian快速部署Rails
    Linux+postfix+extmail+dovecot打造基于web页面的邮件系统
    2018.11.30软件更新公告
    2018.10.11软件更新公告
    2018.09.25软件更新公告
  • 原文地址:https://www.cnblogs.com/Fy1999/p/9161554.html
Copyright © 2020-2023  润新知