Wannafly挑战赛17 AB

Posted xingkongyihao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于Wannafly挑战赛17 AB的主要内容,如果未能解决你的问题,请参考以下文章

Wannafly挑战赛2 B.Travel 最短路+思维

Wannafly挑战赛21A

Wannafly挑战赛4. B

NowCoder Wannafly挑战赛23 体验记

Wannafly挑战赛14 F.细胞

wannafly 挑战赛10 小H和密码