2017.9.6 礼物 思考记录
这题就是一个直接的数论码农题、
扩展lucas+CRT+exgcd直接搞过去
而第一遍wa了,因为没开long long、、
码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 1000005
#define ll long long
ll P,p[N],a[N],n,x,y,pp[N],cnt;
struct la
{ll ji,ci;
};
void exgcd(int a,int b)
{if(!b){x=1;y=0;return;}exgcd(b,a%b);ll t=x;x=y;y=t-(a/b)*y;
}
ll ksm(ll a,ll b,ll mod)
{int ans=1;while(b){if(b%2)ans=ans*a%mod;b/=2;a=a*a%mod; } return ans;
}
la cl(ll n,ll xh)
{ la o;if(n==0){o.ci=0;o.ji=1;return o; }ll i;ll zq=n/pp[xh],gs=n/p[xh];ll lin=1;if(zq>0){for(i=1;i<=pp[xh];i++){if(i%p[xh]==0)continue;lin*=i;lin%=pp[xh]; }lin=ksm(lin,zq,pp[xh]);}for(i=zq*pp[xh]+1;i<=n;i++){if(i%p[xh]==0)continue;lin*=i;lin%=pp[xh]; }la oo=cl(gs,xh);o.ci=gs+oo.ci;o.ji=(lin*oo.ji)%pp[xh];return o;
}
ll C(ll a,ll b,ll xh)
{if(a<b)return 0;la s1=cl(a,xh);la s2=cl(b,xh);la s3=cl(a-b,xh);ll fmci=s2.ci+s3.ci;ll fzci=s1.ci;exgcd((s3.ji*s2.ji)%pp[xh],pp[xh]);ll daan=(s1.ji*x)%pp[xh]*ksm(p[xh],fzci-fmci,pp[xh])%pp[xh];return daan;
}
ll CRT()
{ll i;ll ans=0;for(i=1;i<=cnt;i++)P*=pp[i];for(i=1;i<=cnt;i++){ll pi=P/pp[i];exgcd(pi,pp[i]);ans=(ans+pi*x*a[i])%P; }return (ans+P)%P;
}
int main()
{ll lin;ll i,j,m;scanf("%lld",&P);for(i=2;i<=P;i++){if(P%i==0){p[++cnt]=i;pp[cnt]=1;a[cnt]=1;while(P%i==0){pp[cnt]*=i;P/=i; } }}scanf("%lld",&n);scanf("%lld",&m);for(j=1;j<=m;j++){scanf("%lld",&lin); for(i=1;i<=cnt;i++){a[i]=a[i]*C(n,lin,i)%pp[i]; }n-=lin;}if(n<0){printf("Impossible");}else printf("%lld",CRT());
}
2017.9.6 礼物 思考记录相关推荐
- 2017.9.5 组合数学 思考记录
这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...
- 2017.9.4 Nim 思考记录
只要知道nim的结论 这题就是链剖板子题.1A 注意bzoj 的 换行符是 \r!! \r!! \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...
- 2017.10.28 排序 思考记录
这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...
- 2017.10.28 压缩 思考记录
这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd = abRRcdcdcdcdR != Ma ...
- 2017.10.6 单词 思考记录
少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...
- 2017.10.5 高速公路 思考记录
..一开始死活不知道样例8/3是怎么算出来的.. 后来才发现右端点要-1.. 这个题说是期望,但因为每个点的概率相同,所以直接求和然后除就可以了 维护每个区间的答案,听说直接维护答案很难写,,感觉还可 ...
- 2017.10.1 蚯蚓 思考记录
现在看来这个题真心不难. 如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的 由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的 所以就sor ...
- 2017.9.28 产品加工 思考记录
很早之前做的了.发现bzoj上竟然没提交过 于是又重推了一遍 首先这个ti<=5是用来让n^2的复杂度降一降的, 然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个 ...
- 2017.9.28 降雨量 思考记录
论逻辑清晰的重要性. 首先大小的关系明摆着是要你建一颗线段树 然后就可以分类讨论了 x没有 y有 x有 y没有 x没有 y没有 x有 y有 对于都没有的情况 只可能是maybe 对于一个没有的情况, ...
最新文章
- 重温目标检测--Faster R-CNN
- 新遇到的系统编译问题!已解决!
- Oracle 常见的33个等待事件
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- 结构体字节大小计算方法
- android中心点旋转晃动_Android:如何在中心点上旋转位图
- Python基本数据类型(二)
- php网页论坛制作教程,PHP开发 小型论坛教程之登录HTML页面
- 基于yolo5工地安全帽和禁入危险区域识别系统,附数据集
- HDU 3420 Bus Fair [补]
- spring定时器时间表达式
- Lenovo System x3650 M5 使用ServerGuide安装win2016(U盘安装)
- 【算法笔记】树形DP算法总结详解
- 手机照片分辨率dpi怎么调?一寸证件照照片dpi怎么调300?
- linux透明桥,linux透明防墙(网桥模式).doc
- xss.haozi靶场通关
- 怎么将flac转换成mp3
- 宝宝起名神器小程序源码_支持多种流量主模式
- 【Bugzilla】我按照bugzilla的官方指导进行的安装。(一)
- 三维点云课程(七)——特征点描述
热门文章
- Linux搜狗输入法候选词乱码
- Python官方文档学习心得(第六篇)
- 计算机绘图理论试题库,CAD理论试卷及答案「最新」
- python进行数据分析 简书_《利用python进行数据分析》读书笔记1
- python做bi系统_2020年很受Python工程师喜爱的5款数据可视化bi软件
- java 文曲星猜数字,文曲星里的猜数字代码(原创)
- 如何用servle和c3p0-DBUtils实现用户登录功能
- 三次握手和四次挥手图解_详解 TCP 连接的“三次握手”与“四次挥手”
- 3_数据分析—数据清洗及特征处理
- html图片圆点切换,JQuery和html+css实现带小圆点和左右按钮的轮播图实例