题目背景

国王1带大家到了数字王国的中心:三角圣地。

题目描述

不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成。这个倒三角的顶端有一排数字,分别是1~N。1~N可以交换位置。之后的每一行的数字都是上一行相邻两个数字相加得到的。这样下来,最底端就是一个比较大的数字啦!数字王国称这个数字为“基”。国王1希望“基”越大越好,可是每次都自己去做加法太繁琐了,他希望你能帮他通过编程计算出这个数的最大值。但是这个值可能很大,所以请你输出它mod 10007 的结果。

任务:给定N,求三角形1~N的基的最大值 再去 mod 10007。

输入输出格式

输入格式:

一个整数N

输出格式

一个整数,表示1~N构成的三角形的最大的“基”

思路:

其实这道题大家画个图就会发现,1~n个数在他们自己位置上的权值是杨辉三角形第n行

由于可以交换位置,所以将最大的放在中间即可

于是开始算了

一开始,我用的递推组合数直接求一行杨辉三角形

50分??

哦,1000000太大了,递推会出锅

好吧,Lucas来一发

还是50分??

好吧,TLE出锅了

怎么办呢?
看来只能预处理阶乘了。。。

心累。。

递推版:

#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,p,t,ans[1000010],ny[1000010],out;
void qny()
{ny[1]=1;for(register int a=2;a<=n;a++){ny[a]=(p-(p/a))*ny[p%a]%p;}
}
int main()
{scanf("%d",&n);p=10007;qny();m=(n+1)/2;ans[0]=1;for(register int i=1;i<=m-1;i++){ans[i]=ans[i-1]*(n-i)*ny[i]%p;}for(register int i=2;i<=n;i+=2){long long ltt=i+i-1;ltt%=p;ltt*=ans[i/2-1];ltt%=p;out+=ltt;out%=p;}if(n%2==1){long long ltt=n*ans[m-1]%p;out+=ltt;out%=p;}cout<<out;
}

Lucas朴素版:

// luogu-judger-enable-o2
#include<iostream>
#include<cstdio>
#define rii register int i
using namespace std;
unsigned long long n,m,p,t,ny[100010],out;
void qny()
{ny[1]=1;for(register int a=2;a<=p;a++){ny[a]=(p-(p/a))*ny[p%a]%p;}
}
int zhs(int q,int x)
{if(q==0){return 1;}long long ltt=1;for(register int a=1;a<=q;a++){ltt*=ny[a];ltt%=p;}for(register int a=1;a<=q;a++){ltt*=(x-a+1);ltt%=p;}return ltt;
}
long long lucas(int s,int t)
{if(t==0){return 1;}else{return (lucas(s/p,t/p)*zhs(s%p,t%p))%p;}
}
int main()
{scanf("%d",&n);p=10007;qny();for(rii=1;i<=n;i+=2){if(i==n){out+=lucas(i/2,n-1)*(i);}else{out+=lucas(i/2,n-1)*(i*2+1);}out%=p;}cout<<out;
}

正解:

#include<iostream>
#include<cstring>
#define rii register int i
using namespace std;
int p=10007;
long long jc[10010],ny[10010],n,ans;
void ycl()
{  jc[0]=1;jc[1]=1;ny[0]=1;ny[1]=1; for(rii=2;i<=p-1;i++){jc[i]=jc[i-1]*i%p;}for(rii=2;i<=p-1;i++){ny[i]=(p-p/i)*ny[p%i]%p; }for(rii=1;i<=p-1;i++){ny[i]=ny[i-1]*ny[i]%p;}
}
long long lucas(long long h,long long j)
{  if(h<j){return 0;}if(h<p&&j<p){return jc[h]*ny[j]%p*ny[h-j]%p; } return lucas(h/p,j/p)*lucas(h%p,j%p)%p;
}
int main()
{  ycl();cin>>n;for(rii=1;i<=n;i++){if(i%2==0){ans=(ans+(i*lucas(n-1,n-i/2))%p)%p;if(ans<0){ans+=p;}}else{ans=(ans+(lucas(n-1,(i+1)/2-1)*i)%p)%p;if(ans<0){ans+=p;}}}cout<<ans;
}

  

转载于:https://www.cnblogs.com/ztz11/p/9209182.html

《瞿葩的数字游戏》T3-三角圣地(Lucas)相关推荐

  1. [洛谷2674]瞿葩的数字游戏-多边形数 题解

    前言 原题题目<瞿葩的数字游戏>T2-多边形数. 因为博客园标题不能太长所以压缩了一下. 题解 这道题目我是按表格中的列来考虑的, 设读入的数字为\(x\),考虑上面的表格. 我们发现如果 ...

  2. 【刷题】洛谷 P2675 《瞿葩的数字游戏》T3-三角圣地

    题目背景 国王1带大家到了数字王国的中心:三角圣地. 题目描述 不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成.这个倒三角的顶端有一排数字,分别是1 ~ N.1 ~ N可以交换位置. ...

  3. 【luoguP2675】《瞿葩的数字游戏》T3-三角圣地

    题目背景 国王1带大家到了数字王国的中心:三角圣地. 题目描述 不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成.这个倒三角的顶端有一排数字,分别是1~N.1~N可以交换位置.之后的每 ...

  4. 洛谷P2675 《瞿葩的数字游戏》T3-三角圣地

    题目背景 国王1带大家到了数字王国的中心:三角圣地. 题目描述 不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成.这个倒三角的顶端有一排数字,分别是1~N.1~N可以交换位置.之后的每 ...

  5. 《瞿葩的数字游戏》T3-三角圣地

    题目描述: 雾 题目分析: 观察发现越大的数排在中间位置对答案越有利,所以就可以贪心了 1 3 4 2 那么第一个位置1对答案贡献1次 第二个位置3对答案贡献3次 第三个位置4对答案贡献3次 第四个位 ...

  6. Luogu P2675 《瞿葩的数字游戏》T3-三角圣地

    题目链接:传送门 显然 越大的数越靠中间最后的结果越大 那就看每个数能被加多少次 算上几个就看得出来 是按杨辉三角给贡献的 统计答案时就用那个数i乘以它被算的次数 注意大的在中间,组合数别写错 #in ...

  7. P2675 《瞿葩的数字游戏》T3-三角圣地

    传送门 考虑最上面每个位置的数对答案的贡献 然后就很容易发现: 如果有n层,位置 i 的数对答案的贡献就是C( n-1,i ) 然后就有很显然的贪心做法: 越大的数放越中间,这样它的贡献就会尽可能的大 ...

  8. 《瞿葩的数字游戏》T3-三角圣地,洛谷P2675,Lucas定理

    正题 看到这题就会想到杨辉三角形. 一个很明显的性质就是杨辉三角形中同一行内中间大两边小,所以我们尽量让中间大的数乘上中大的数,贪心就可以了. 发现mod数很小,所以处理逆元和阶乘的时候会有0的出现. ...

  9. 题解 P2674 【《瞿葩的数字游戏》T2-多边形数】

    题目说了很清楚,此题找规律,那么就找规律. 我们观察数列. 令k表示数列的第k个数. 三角形数:1 3 6 10 15 两项相减:1 2 3 4 5 再次相减:1 1 1 1 1 四边形数:1 4 9 ...

最新文章

  1. 基于 OpenCV 的网络实时视频流传输
  2. 依图颜水成:AI芯片设计要深度融合算法,才能实现极致性能
  3. 深入浅出mfc学习笔记——六大关键技术之仿真_运行时和动态创建
  4. P1305 新二叉树
  5. 扩散(信息学奥赛一本通-T1437)
  6. 携号转网,用户最关心的还是网络质量
  7. Caffe100数据集使用
  8. 引用类型和值类型学习笔记
  9. 2017 4月20日下午
  10. 北漂程序员,何以露宿街头?
  11. 【Latex】Latex小论文模板
  12. java简易计算器报告_简易计算器java实训报告.docx
  13. 卡农c语言编程,c调卡农钢琴曲谱_卡农C大调钢琴谱(五线谱)
  14. 短视频的地方搞笑配音怎么做?分享一个小技巧,不会方言也能配
  15. spring文件上传拦截器及异常处理
  16. golang 读取Response Body 超时问题
  17. 08_EMS项目之需求分析与界面搭建
  18. 企业微信接收信息服务器全代码,微信企业号的消息和事件的接收处理及解密
  19. android机器人飞机游戏,机器人飞行模拟器
  20. 看国外如何设计城市街道保障行人和自行车交通安全?

热门文章

  1. 分享微信小程序资讯类仿LOL盒子开发
  2. 晓宇姐姐带你逛遍AWE2021,15万平米的展馆到底发布了哪些黑科技?
  3. 电脑开不了机怎么办?排查这3种情况
  4. 悲观锁、乐观锁、死锁
  5. 先付年金计算机公式,【即付年金】即付年金计算公式
  6. PoE交换机能代替普通工业交换机使用吗?
  7. Python学习曲线
  8. 全国计算机软考证书全称,2021年上半年计算机软考证书成绩查询通知(附:学院成绩查询)...
  9. iphone5s如何省电?耗电费电如何处理?iphone5s耗电费电解决方法
  10. PHP面试开场白,教师资格证面试开场白怎么说