首页 > 其他 > 详细

模拟————找规律

时间:2018-06-09 15:53:39      阅读:195      评论:0      收藏:0      [点我收藏+]

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

走格子
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

在平面上有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
直接模拟就行
走过的路径直接标记
然后遇到标记过的转弯就行
数据小直接暴力没毛病
技术分享图片
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
const int INF = 0x3f3f3f3f;
const int mod = 998244353;
typedef long long ll;
ll A[2*maxn];
ll B[maxn];
ll power_mod(ll a,ll n){
    ll ans=1;
    while(n){
        if(n&1) ans=ans*a%mod;
        a=a*a%mod;
        n>>=1;
    }
    return ans;
}
void init(){
    A[0]=1;
    for(int i=1;i<=2e6;i++){
        A[i]=A[i-1]*i%mod;
    }
    for(int i=1;i<=1e6;i++){
        B[i]=power_mod(A[i],mod-2);
    }
}
int main(){
    init();
    int n;
    scanf("%d",&n);
    ll ans=0;
    for(int i =1 ;i<=n;i++){
        ll sum=A[2*i];
        sum=sum*B[i]%mod*B[i]%mod;
        ans=(ans+sum)%mod;
    }
    printf("%lld\n",ans);
    return 0;
}
View Code

 

模拟————找规律

原文:https://www.cnblogs.com/buerdepepeqi/p/9159672.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!