GZS的三角形

GZS的三角形

发布时间: 2015年9月6日 15:18   最后更新: 2016年6月26日 12:10   时间限制: 1000ms   内存限制: 256M

描述

机智无比的G神今天完成了一天的任务,实在是无聊的紧,拿起一支笔在纸上画起了三角形,边长为1, 2, 3,.........

即使是无聊到这种程度,G神发达的大脑也在不停的思考,从顶部的点到沿着所画出的边到达底边的方案有多少种呢。

结果可能比较大, 结果对1000003取余。

例如,边长为2的情况如下所示:

输入

第一行有一个整数 T (1 <= T <= 1000) ,是三角形的个数。
接下来T行,每行一个整数 N (1 <= N <= 10^18),代表三角形边长。

输出

输出T行,每行代表方案数,结果对1000003取余。

样例输入1
复制

3
1
2
3

样例输出1

2
8
48

一道找规律好题?

先给出答案通项吧。

\( ans_n = n! \times 2^n \)

再来给出解释——

我们可以把其看作一个DP,有

\( ans_n = 2n \times ans_{n-1} \)

考虑到达n-1的底层的每个方案,在其基础上有多少方案到达n的底层呢?

不难发现,对于一个到达n-1的底层某个固定点的方案,到n的底层中间的n-1个点(除了最左和最右点),都有且仅有两种方案,即最后一步是或最后一步是。而最左和最右都只有一种方案,加起来就是\( 2 \times (n-1) + 1 + 1 = 2 \times n \)。

然后,考虑编程问题,n!可以暴力递推前1000002项,而当\( n \geq 1000003 \)时,n!在模意义一定为0。至于\( 2^n \),写个快速幂就好了。

 1 #include <cstdio>
 2
 3 #define int long long
 4
 5 const int mxn = 1000010;
 6 const int mod = 1000003;
 7
 8 int n, cas, fac[mxn];
 9
10 inline int pow(int a, int b) {
11     int r = 1;
12     for (; b; b >>= 1) {
13         if (b & 1)
14             r = r * a % mod;
15         a = a * a % mod;
16     }
17     return r;
18 }
19
20 signed main() {
21     fac[0] = 1;
22     for (int i = 1; i < mod; ++i)
23         fac[i] = i * fac[i - 1] % mod;
24     for (scanf("%lld", &cas); cas--; )
25         if (scanf("%lld", &n), n < mod)
26             printf("%lld\n", fac[n] * pow(2, n) % mod);
27         else
28             puts("0");
29 }
时间: 2024-08-09 05:57:18

GZS的三角形的相关文章

BZOJ2458 [BeiJing2011]最小三角形

Description Xaviera现在遇到了一个有趣的问题. 平面上有N个点,Xaviera想找出周长最小的三角形. 由于点非常多,分布也非常乱,所以Xaviera想请你来解决这个问题. 为了减小问题的难度,这里的三角形也包括共线的三点. Input 第一行包含一个整数N表示点的个数. 接下来N行每行有两个整数,表示这个点的坐标. Output 输出只有一行,包含一个6位小数,为周长最短的三角形的周长(四舍五入). Sample Input 4 1 1 2 3 3 3 3 4 Sample

Directx11学习笔记【十】 画一个简单的三角形

本篇笔记要实现的是在屏幕上渲染出一个三角形,重点要学习的是渲染一个几何体的流程方式. 为了渲染几何图形,需要一个顶点缓存和一个描述顶点布局的输入层,还有着色器(主要是顶点着色器和像素着色器),下面来看看具体Demo的实现. 新建一个Win32项目 ,新建一个类我们叫做TriangleDemo,继承自前面教程我们实现的基类Dx11DemoBase. TriangleDemo.h头文件 #pragma once #include "Dx11DemoBase.h" class Triangl

数字三角形

数字三角形必须经过某一个点,使之走的路程和最大 输入格式: 第1行n,表示n行 (n<=25), 第2到n+1行为每个的权值,第n+2行为两个数x,y表示必须经过的点 输出格式: 输出最大值 样例1 输入: 2 1 1 1 1 1 输出: 2 //11 月 23 日 2015 #include <stdio.h> int num[26][26];//存储数字三角形的权值 int route[26][2];//记录临时最优路径 int n; int s1,s2;//以特殊点分为上半段和下半

!HDU 4380 三角屋内有奇数个宝藏的三角形有多少个-计算几何-(向量叉乘&amp;线段与点的关系&amp;暴力枚举)

题意:小明要买三座房子,这三个房子构成一个三角形,已知n个房子的坐标,任何三个房子都不在一条直线上,又已知有m个宝藏的坐标,问房子构成的三角形内有奇数个宝藏的三角形有多少个.数据范围:n(3~100),m(1~1000) 分析: 简单的计算几何.记住这题的做法. 三角形内的点的个数=上面的线段下面的点的个数 -- 下面两条线段下面的点的个数(或者下面一条线段减上面两条线段,看具体位置情况,所以直接取绝对值就好) n个点有n(n-1)/2条线段,不超过1W,枚举每条线段,再枚举每个宝藏的坐标(10

三角形测试用例

某函数规定:"输入三个整数 a . b . c 分别作为三边的边长构成三角形.通过程序判定所构成的三角形的类型 ".写出该函数,并为该函数进行测试用例设计. 正常的输入 三角形有: 直角三角形 钝角三角形 锐角三角形 等腰三角形 等边三角形 等腰直角三角形 #include "my_typedef.h" INT32 triangle_function( INT32 i32l, INT32 i32m, INT32 i32n ) { INT32 temp = 0; /*

叉乘、快速排斥与跨立实验及求取三角形面积

<pre name="code" class="cpp">叉乘 (一)判断方向 (二)判断线段相交 (三)求三角形面积 (一)判断方向 叉乘的性质如下: (1). P x Q > 0; 表示P在Q的顺时针方向; (2). p x Q < 0; 表示P在Q的逆时针方向; (3). P x Q = 0; 表示P和Q是共线的 P(x1,y1),Q(x2,y2), P*Q=x1y2-x2y1 判断结果三种状态 模版为: struct point {

NYOJ 815 三角形【海伦公式】

/* 关键点:海伦公式 解题人:lingnichong 解题时间:2014-10-04 21:48:47 解题体会:海伦公式的使用 */ 三角形 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 在数学中,如果知道了三个点的坐标,我们就可以判断这三个点能否组成一个三角形:如果可以组成三角形,那么我们还可以求出这个三角形的面积.作为一个大学生,如果给你三个点的坐标,你能快速判断出这三个点能组成一个三角形吗?如果可以组成三角形,你能快速求出三角形的面积吗? 输入 第一行输

随机三角形平铺布局算法(iOS实现)

你是否已经看够iOS里默认给出的那些方方正正的块状和规规矩矩的陈列? 本篇给出一种随机三角形平铺布局的算法设计和实现.这种布局在规矩与随机之间做了折中,使其看上去有新鲜感又不会很乱. 本次实现重点在于布局算法的设计和实现,可以改变颜色或者添加图片. 最新源代码下载地址:https://github.com/duzixi/Varied-Layouts(持续维护,欢迎互粉) 博文首发地址:http://blog.csdn.net/duzixi 布局生成效果如下:         核心算法设计以及代码

css伪元素before/after和画三角形的搭配应用

想要实现的效果如下: 第一步:如何用css画出三角形? 1 /* css画三角形 */ 2 .sanjiao{ 3 width:0; 4 border-top:40px solid red; 5 border-bottom:40px solid green; 6 border-left:40px solid blue; 7 border-right:40px solid yellow; 8 } 9 10 <div class="sanjiao"> 11 </div&g