zoukankan      html  css  js  c++  java
  • Wannafly挑战赛17 AB

    A 走格子

    题目描述

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

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

    当A君碰到边界或者已经走过的格子时,他便会逆时针转90°继续走,直到走完m步。
    现在给你两个整数n和m,请算出走完m步后A君的坐标。

    输入描述:

    输入一行两个整数n和m。

    输出描述:

    输出一行两个数表示A君的坐标。
    示例1

    输入

    复制
    3 3

    输出

    复制
    3 2

    备注:

    n<=1000,m<n*n


    模拟题。
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 bool vis[1010][1010];
     4 int main() {
     5     int n, m;
     6     cin >> n >> m;
     7     int x = 1, y = 1;
     8     vis[x][y] = 1;
     9     while(m) {
    10         while(x+1 <= n && !vis[x+1][y] && m) {
    11             vis[++x][y] = 1;
    12             m--;
    13         }
    14         while(y+1 <= n && !vis[x][y+1] && m) {
    15             vis[x][++y] = 1;
    16             m--;
    17         }
    18         while(x-1 >= 1 && !vis[x-1][y] && m) {
    19             vis[--x][y] = 1;
    20             m--;
    21         }
    22         while(y-1 >=1 && !vis[x][y-1] && m) {
    23             vis[x][--y] = 1;
    24             m--;
    25         }
    26     }
    27     cout << x << ' ' << y << endl;
    28     return 0;
    29 }

    B 求值2

    题目描述

    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的值。

    输入描述:

    输入一个整数n

    输出描述:

    输出Ans的值。
    示例1

    输入

    复制
    3

    输出

    复制
    28

    备注:

    n<=106

    数学题,求for(i:n) C(i*2,i)。

     1 //for i:n : C(i*2,i)
     2 #include <bits/stdc++.h>
     3 #define ll long long
     4 using namespace std;
     5 const int mod = 998244353;
     6 const int N = 2e6+10;
     7 ll a[N], b[N];
     8 ll n, ans = 0;
     9 ll pow_mod(ll x, ll n) {
    10     ll y = 1;
    11     while(n) {
    12         if(n&1) y = y*x%mod;
    13         x = x*x%mod;
    14         n >>= 1;
    15     }
    16     return y;
    17 }
    18 void init() {
    19     a[1] = 1;
    20     for(ll i = 2; i <= 2*n; i ++) a[i] = (a[i-1])*i%mod;
    21     for(ll i = 1; i <= n; i ++) {
    22         b[i] = pow_mod(a[i],mod-2);
    23     }
    24 }
    25 ll C(int x, int y) {
    26     return (a[x]*b[y])%mod*b[y]%mod;
    27 }
    28 int main() {
    29     cin >> n;
    30     init();
    31     for(int i = 1; i <= n; i ++) {
    32         ans = (ans + C(i*2,i)) % mod;
    33     }
    34     cout << ans << endl;
    35     return 0;
    36 }
  • 相关阅读:
    多浏览器CSS样式解决方法
    CSS基础
    HTML页面——常用模块
    CSS选择器
    li水平与div水平
    天梯题目解答——1012、1430
    天梯题目解答——1205、1075、1083、1160
    HTML5 元素拖动
    div简单水平移动效果
    Matlab代码优化--向量化
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/9159205.html
Copyright © 2011-2022 走看看