P2675 《瞿葩的数字游戏》T3-三角圣地
考虑最上面每个位置的数对答案的贡献
然后就很容易发现:
如果有n层,位置 i 的数对答案的贡献就是C( n-1,i )
然后就有很显然的贪心做法:
越大的数放越中间,这样它的贡献就会尽可能的大
然后考虑算C( i,j )
因为n很大,模数很小
所以要用lucas定理求C
C(n,m)= C(n/mo,m/mo)*C(n%mo,m%mo)
当C比较小的时候可以直接用阶乘和阶乘逆元算出
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'')
{
if(ch=='-') f=-;
ch=getchar();
}
while(ch>=''&&ch<='')
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
const int N=1e6+,mo=1e4+;
int n;
ll inv[mo],fac[mo];//注意long long
inline void pre()//预处理阶乘和阶乘逆元
{
fac[]=;
for(int i=;i<mo;i++) fac[i]=fac[i-]*i%mo;
inv[]=inv[]=;
for(int i=;i<mo;i++) inv[i]=(mo-mo/i)*inv[mo%i]%mo;
for(int i=;i<mo;i++) inv[i]=inv[i]*inv[i-]%mo;//求阶乘逆元
}
inline ll C(ll x,ll y)
{
if(x<y) return ;
if(x<mo&&y<mo) return fac[x]*inv[y]%mo*inv[x-y]%mo;//C较小时直接求
return C(x%mo,y%mo)*C(x/mo,y/mo)%mo;
}
inline ll f(ll x) { return x>=mo ? x-mo : x; }//对不超过2*mo的数取模这样会快点
int main()
{
pre();
n=read();
ll ans=;
for(int i=;i<=n;i++)
ans=f( ans + C(n-,(i-)>>)*i%mo );
printf("%lld",ans);
return ;
}
P2675 《瞿葩的数字游戏》T3-三角圣地的更多相关文章
- 【刷题】洛谷 P2675 《瞿葩的数字游戏》T3-三角圣地
题目背景 国王1带大家到了数字王国的中心:三角圣地. 题目描述 不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成.这个倒三角的顶端有一排数字,分别是1 ~ N.1 ~ N可以交换位置. ...
- 《瞿葩的数字游戏》T3-三角圣地(Lucas)
题目背景 国王1带大家到了数字王国的中心:三角圣地. 题目描述 不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成.这个倒三角的顶端有一排数字,分别是1~N.1~N可以交换位置.之后的每 ...
- 【luoguP2675】《瞿葩的数字游戏》T3-三角圣地
题目背景 国王1带大家到了数字王国的中心:三角圣地. 题目描述 不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成.这个倒三角的顶端有一排数字,分别是1~N.1~N可以交换位置.之后的每 ...
- LUOGU P2675 《瞿葩的数字游戏》T3-三角圣地
题面 解题思路 手推可以得出,最后每个数字的贡献其实就是第n行杨辉三角数,然后直接卢卡斯直接算(今天才找到lucas定理时间复杂度是log n,log以模数为底).代码略麻烦,不想改了. 代码 #in ...
- 题解 P2674 【《瞿葩的数字游戏》T2-多边形数】
题目说了很清楚,此题找规律,那么就找规律. 我们观察数列. 令k表示数列的第k个数. 三角形数:1 3 6 10 15 两项相减:1 2 3 4 5 再次相减:1 1 1 1 1 四边形数:1 4 9 ...
- C语言猜数字游戏
猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- java 猜数字游戏
作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...
- 【原创Android游戏】--猜数字游戏Version 0.1
想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...
随机推荐
- [JSOI 2015] 最大公约数
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4488 [算法] 不妨首先枚举左端点 注意到对于任意一个正整数n , 其质因子个数是l ...
- bzoj 2178 圆的面积并 —— 辛普森积分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2178 先看到这篇博客:https://www.cnblogs.com/heisenberg- ...
- 自己写的基于java Annotation(注解)的数据校验框架
JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...
- js之翻牌游戏中的一个深刻感悟
先“上菜”: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- DCloud-MUI:Hello mui
ylbtech-DCloud-MUI:Hello mui MUI-最接近原生App体验的前端框架 1. 返回顶部 1. MUI-最接近原生App体验的前端框架 极小 100k的js文件,60k的css ...
- ubuntu使用root权限登录的设置方法
Ubuntu系统默认是不允许用户以root身份登录的,在网上找到的方法如下: 1.首先设置root密码,利用现有管理员帐户登陆Ubuntu,在终端执行命令:sudo passwd root,接着输入密 ...
- Ubuntu12.04安装 vsftpd
Ubuntu12.04 FTP 的配置 ubuntu安装ftp服务器 1: 安装vsftpd ~$ sudo apt-get install vsftpd 2: 配置vsftpd 2.1 修改vs ...
- 19E Fairy
Once upon a time there lived a good fairy A. One day a fine young man B came to her and asked to pre ...
- JavaScript学习系列7 -- JavaScript中的运算符
今天,我们来说一说JavaScript中的运算符,首先我们来讲一讲 一元运算符 JavaScript中的一元运算符有以下几种 1. delete delete 运算符主要用于删除对以前定义的对象属性或 ...
- 8.使用hydra对端口进行爆破
如果对开启端口的服务不清楚,请看我之前写的文章:https://www.cnblogs.com/bmjoker/p/8833316.html 2018,网站的防护(sql,xss...)的安全保护也已 ...