QDUoj GZS的三角形 棋盘里的数学 思维+杨辉三角
2017-07-21 10:34
330 查看
1.
题目
我的提交
描述
机智无比的G神今天完成了一天的任务,实在是无聊的紧,拿起一支笔在纸上画起了三角形,边长为1, 2, 3,.........
![](http://acm.hdu.edu.cn/data/images/C424-1001-1.jpg)
即使是无聊到这种程度,G神发达的大脑也在不停的思考,从顶部的点到沿着所画出的边到达底边的方案有多少种呢。
结果可能比较大, 结果对1000003取余。
例如,边长为2的情况如下所示:
![](http://acm.hdu.edu.cn/data/images/C424-1001-2.jpg)
输入
第一行有一个整数 T (1 <= T <= 1000) ,是三角形的个数。
接下来T行,每行一个整数 N (1 <= N <= 10^18),代表三角形边长。
输出
输出T行,每行代表方案数,结果对1000003取余。
样例输入1 复制
样例输出1
![](http://img.blog.csdn.net/20170119142108800?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW9fYmM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
规律如上:可以得到第n行即边长为n的ans
= 2 * ans[n-1] + (n-1) * 2*ans[n-1] = 2 * n * ans[n-1]。
但是直接这么做时间会爆,当 n >= 1000003时,对 1000003取余之后都为0。
[cpp] view plain copy
#include <iostream>
#include <cstdio>
#define M 1000003
#define LL long long
using namespace std;
LL ans[M+5];
int main(){
int t, i;
LL n;
ans[1] = 2;
for(i = 2; i < M; ++i)
ans[i] = 2*i*ans[i-1] % M;
cin >> t;
while(t--){
scanf("%lld", &n);
if(n >= M){
printf("0\n");
continue;
}
printf("%lld\n", ans
);
}
return 0;
}
2.
题目
我的提交
描述
lhcoder有一个n行m列的棋盘,有一颗棋子从左上角(1,1)开始移动,每次只能往右或者往下移动一格,到右下角(n,m)一共有多少移动方案?
输入
有多组测试数据,每组测试数据中有两个整数n和m(2 <= n, m <= 1000),代表为n行m列的棋盘。
输出
一个整数p,代表从左上角(1,1)移动到右下角(n,m)的方案数,由于方案数可能比较大,结果请对99991取模。
样例输入1 复制
样例输出1
样例输入2 复制
样例输出2
![](http://img.blog.csdn.net/20170119153400531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW9fYmM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
规律如下:当x = 1或y = 1时,该ans = 1;除此之外,(x, y)的ans = (x-1, y)的ans + (x, y-1)的ans。
[cpp] view plain copy
#include <iostream>
#include <cstdio>
#define M 99991
#define LL long long
using namespace std;
LL a[1005][1005];
LL doo(int x, int y){
if(a[x][y] != 0) return a[x][y];
if(x == 1 || y == 1) return a[x][y] = 1;
else return a[x][y] = (doo(x-1, y) + doo(x, y-1)) % M;
}
int main(){
int n, m;
a[1][2] = a[2][1] = 1;
while(~scanf("%d %d", &n, &m)){
printf("%lld\n", doo(n, m));
}
return 0;
}
题目
我的提交
GZS的三角形
发布时间: 2015年9月6日 15:18 最后更新: 2016年6月26日 12:10 时间限制: 1000ms 内存限制: 256M描述
机智无比的G神今天完成了一天的任务,实在是无聊的紧,拿起一支笔在纸上画起了三角形,边长为1, 2, 3,.........
![](http://acm.hdu.edu.cn/data/images/C424-1001-1.jpg)
即使是无聊到这种程度,G神发达的大脑也在不停的思考,从顶部的点到沿着所画出的边到达底边的方案有多少种呢。
结果可能比较大, 结果对1000003取余。
例如,边长为2的情况如下所示:
![](http://acm.hdu.edu.cn/data/images/C424-1001-2.jpg)
输入
第一行有一个整数 T (1 <= T <= 1000) ,是三角形的个数。
接下来T行,每行一个整数 N (1 <= N <= 10^18),代表三角形边长。
输出
输出T行,每行代表方案数,结果对1000003取余。
样例输入1 复制
3 1 2 3
样例输出1
2 8 48
规律如上:可以得到第n行即边长为n的ans
= 2 * ans[n-1] + (n-1) * 2*ans[n-1] = 2 * n * ans[n-1]。
但是直接这么做时间会爆,当 n >= 1000003时,对 1000003取余之后都为0。
[cpp] view plain copy
#include <iostream>
#include <cstdio>
#define M 1000003
#define LL long long
using namespace std;
LL ans[M+5];
int main(){
int t, i;
LL n;
ans[1] = 2;
for(i = 2; i < M; ++i)
ans[i] = 2*i*ans[i-1] % M;
cin >> t;
while(t--){
scanf("%lld", &n);
if(n >= M){
printf("0\n");
continue;
}
printf("%lld\n", ans
);
}
return 0;
}
2.
题目
我的提交
棋盘里的数学
发布时间: 2016年9月13日 20:39 最后更新: 2016年9月20日 12:04 时间限制: 1000ms 内存限制: 128M描述
lhcoder有一个n行m列的棋盘,有一颗棋子从左上角(1,1)开始移动,每次只能往右或者往下移动一格,到右下角(n,m)一共有多少移动方案?
输入
有多组测试数据,每组测试数据中有两个整数n和m(2 <= n, m <= 1000),代表为n行m列的棋盘。
输出
一个整数p,代表从左上角(1,1)移动到右下角(n,m)的方案数,由于方案数可能比较大,结果请对99991取模。
样例输入1 复制
2 2
样例输出1
2
样例输入2 复制
2 3
样例输出2
3
规律如下:当x = 1或y = 1时,该ans = 1;除此之外,(x, y)的ans = (x-1, y)的ans + (x, y-1)的ans。
[cpp] view plain copy
#include <iostream>
#include <cstdio>
#define M 99991
#define LL long long
using namespace std;
LL a[1005][1005];
LL doo(int x, int y){
if(a[x][y] != 0) return a[x][y];
if(x == 1 || y == 1) return a[x][y] = 1;
else return a[x][y] = (doo(x-1, y) + doo(x, y-1)) % M;
}
int main(){
int n, m;
a[1][2] = a[2][1] = 1;
while(~scanf("%d %d", &n, &m)){
printf("%lld\n", doo(n, m));
}
return 0;
}
相关文章推荐
- java-Qduoj-“GZS的三角形”的不完全解
- qduoj GZS的三角形
- 【HPU-oj】-Triangles(锐角三角形个数,数学,思维)
- QDUoj GZS的三角形 棋盘里的数学 (数学规律题)
- qduoj 104 棋盘里的数学(记忆化搜索)
- 数学不是公式,而是一种思维!
- 用css3写三角形和三角箭头并旋转
- 用数学思维求连续整数的和和为500,例如98,99,100,101,102
- 小学一年级的七巧思维数学比赛
- hdu 4466 triangle 三角形统计 数学计数
- 数学是思维方式而不是技术
- Pascal's Triangle II --杨辉三角形-链表和数组
- CF - 807C. Success Rate - 二分+思维+数学
- codeforces 903D. Almost Difference(数学+思维)
- qduoj 102 一道非常简单的数学题(构造)
- ZJUT 1197 倒杨辉三角形 (不是水题胜似水题)
- Pascal triangle 帕斯卡三角形 杨辉三角形 二项式定理
- 蓝桥杯 BASIC-6 基础练习 杨辉三角形
- [BZOJ3505][Cqoi2014]数三角形(组合数学+gcd)
- hpuoj 1076 杨辉大三角