Robot(hdu5673)
Robot
有一个机器人位于坐标原点上。每秒钟机器人都可以向右移到一个单位距离,或者在原地不动。如果机器人的当前位置在原点右侧,它同样可以
向左移动单位距离。一系列的移动(左移,右移,原地不动)定义为一个路径。问有多少种不同的路径,使得nnn秒后机器人仍然位于坐标原点?
答案可能很大,只需输出答案对1,000,000,0071,000,000,0071,000,000,007的模。
输入包含多组数据. 第一行有一个整数T(1≤T≤100)T (1\leq T\leq 100)T(1≤T≤100), 表示测试数据的组数. 对于每组数据:
输入一个整数 n(1≤n≤1,000,000)n (1\leq n\leq 1,000,000)n(1≤n≤1,000,000)。
对于每组数据,输出一个整数
3
1
2
4
1
2
9
思路:默慈金数
在一个网格上,若限定每步只能向右移动一格,可以右上,右下,
横向,向右,并禁止移动到以下的地方,则以这种走法移动步从到的可能形成的路径的总数
为的默慈金数。如下图示
默慈金数满足如下递推式:
可以将点的过程想象成上图,那么就是一个很裸的默慈金数;
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<set>
7 #include<math.h>
8 #include<map>
9 const int N =1e9+7;
10 using namespace std;
11 typedef long long LL;
12 LL quick(LL n,LL m,LL mod);
13 LL M[1000005];
14 int main(void)
15 {
16 M[1] = 1;M[0] = 1;int i;
17 for(i = 2;i <= 1000000;i++)
18 {
19 LL x = (2*i+1)*M[i-1]%N;
20 LL y = (3*i-3)*M[i-2]%N;
21 x = (x+y)%N;
22 y = i+2;
23 LL ni = quick(y,N-2,N);
24 //printf("%lld\n",ni);
25 M[i] = x*ni%N;
26 }
27 int T;
28 scanf("%d",&T);
29 while(T--)
30 {
31 int n;
32 scanf("%d",&n);
33 printf("%lld\n",M[n]);
34 }
35 return 0;
36 }
37 LL quick(LL n,LL m,LL mod)
38 {
39 n%=mod;
40 LL ask = 1;
41 while(m)
42 {
43 if(m&1)
44 ask = ask*n%mod;
45 n = n*n%mod;
46 m>>=1;
47 }
48 return ask;
49 }
Robot(hdu5673)的更多相关文章
- hdu5673 Robot 卡特兰数+组合数学+线性筛逆元
Robot Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- hdu-5673 Robot(默次金数)
题目链接: Robot Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述 ...
- HDU5673 Robot 默慈金数
分析: 注:然后学了一发线性筛逆元的姿势 链接:http://blog.miskcoo.com/2014/09/linear-find-all-invert #include<iostream& ...
- hdu5673 Robot 卡特兰数 / 默慈金数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5673 分析: 这道题是一道裸的默慈金数,比较容易想到的是用卡特兰数来做.不了解的可以先学习一下. 卡特 ...
- Robot Framework用户手册 (版本:3.0)
版权信息:诺基亚网络和解决中心 本翻译尊重原协议,仅用于个人学习使用 1.开始: 1.1 介绍: Robot Framework是一个基于Python的,为终端测试和验收驱动开发(ATDD)的可扩展的 ...
- selenium webdriver 右键另存为下载文件(结合robot and autoIt)
首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为 ...
- RIDE -- Robot Framework setup
RobotFramework 是一款基于python 的可以实现关键字驱动和数据驱动并能够生成比较漂亮的测试报告的一款测试框架 这里使用的环境是 python-2.7.10.amd64.msi RID ...
- [8.2] Robot in a Grid
Imagine a robot sitting on the upper left corner of grid with r rows and c columns. The robot can on ...
- Robot Framework自动化测试 ---视频与教程免费分享
当我第一次使用Robot Framework时,我是拒绝的.我跟老大说,我拒绝其实对于习惯了代码的自由,所以讨厌这种“填表格”式的脚本.老大说,Robot Framework使用简单,类库丰富,还可以 ...
随机推荐
- 【模板】Splay(伸展树)普通平衡树(数据加强版)/洛谷P6136
题目链接 https://www.luogu.com.cn/problem/P6136 题目大意 需要写一种数据结构,来维护一些非负整数( \(int\) 范围内)的升序序列,其中需要提供以下操作: ...
- Go语言核心36讲(Go语言实战与应用二十一)--学习笔记
43 | bufio包中的数据类型(下) 在上一篇文章中,我提到了bufio包中的数据类型主要有Reader.Scanner.Writer和ReadWriter.并着重讲到了bufio.Reader类 ...
- MIT6.824 分布式系统实验
LAB1 mapreduce mapreduce中包含了两个角色,coordinator和worker,其中,前者掌管任务的分发和回收,后者执行任务.mapreduce分为两个阶段,map阶段和red ...
- A Child's History of England.20
CHAPTER 7 ENGLAND UNDER HAROLD THE SECOND, AND CONQUERED BY THE NORMANS Harold was crowned King of E ...
- Spark基础:(五)Spark编程进阶
共享变量 (1)累加器:是用来对信息进行聚合的,同时也是Spark中提供的一种分布式的变量机制,其原理类似于mapreduce,即分布式的改变,然后聚合这些改变.累加器的一个常见用途是在调试时对作业执 ...
- Redis(一)【基础入门】
目录 一.大型网站的系统特点 二.大型网站架构发展历程 三.从NoSQL说起 四.Redis简介 五.Redis安装 1.上传并解压 2.安装C语言编译环境 3.修改安装位置 4.编译安装 5.启动R ...
- 解决springboot序列化 json数据到前端中文乱码问题
前言 关于springboot乱码的问题,之前有文章已经介绍过了,这一篇算是作为补充,重点解决对象在序列化过程中出现的中文乱码的问题,以及后台报500的错误. 问题描述 spring Boot 中文返 ...
- Oracle带输入输出参数的存储过程
(一)使用输入参数 需求:在emp_copy中添加一条记录,empno为已有empno的最大值+1,ename不能为空且长度必须大于0,deptno为60. 创建存储过程: create or rep ...
- NSURLSession实现文件上传
7.1 涉及知识点(1)实现文件上传的方法 /* 第一个参数:请求对象 第二个参数:请求体(要上传的文件数据) block回调: NSData:响应体 NSURLResponse:响应头 NSErro ...
- oracle体系结构(图)