题目大意

给定 $n$($1\le n\le 1000$)个正整数 $a_1, a_2, \dots, a_n$($a_i \le 10^{12}$),令 $s$ 为这 $n$ 个数之和。求
$$
\frac{s! } {\prod\limits_{1\le i\le n} a_i !} \bmod 10
$$

解法

中国剩余定理。

设上式中左边的商为 $x$,先分别求出 $x \bmod 2$ 和 $x\bmod 5$, 再利用中国剩余定理就可求得答案。

这个问题归结为:
对于素数 $p$ 和正整数 $n$,将 $n!$ 写成 $n! = ap^{k}$,且 $p$ 不是 $a$ 的因子。求 $a$ 和 $k$ 。

不难发现:
设 $n$ 的 $p$-进制展开式为
$$ n = b_0 + b_1 p + b_2 p^2 + \dots + b_r p^r \qquad ( 0 \le b_i \in \mathbb{Z} < p, b_r > 0) $$

则有
\begin{align}
k & = [n/p] + [n/p^2] + [n/p^3] + \dots + [n/p^r] \\
a & \equiv (p-1)!^{k} b_0! b_1! \dots b_r! \pmod{p} \label{Eq:2}
\end{align}

其中 $[x]$ 表示不超过 $x$ 的最大整数。
(令 $B = b_0 + b_1 + ... + b_r$,不难证明,$k$ 还可以写成 $k = \frac{n - B}{p-1}$)

根据 Wilson 定理,\eqref{Eq:2} 可写成
\begin{equation}
a \equiv (-1)^{k} b_0! b_1! \dots b_r ! \pmod{p}
\end{equation}

算法的复杂度为 $O(p + \log_p n)$ 。

从这个问题中积累的新模型
一、$\frac{A}{B}\bmod p$($B$ 能整除 $A$ 且 $p$ 是素数)的解法。
二、$n! \bmod p$($p$ 是素数) 的解法。


下面考虑:模数不是 $10$ 而是 $20$ 的情况下,此题如何求解。

仍循旧思路,采用中国剩余定理,我们需要求出 $x \bmod 4$;按旧办法求当然是可以的。注意:由于要预处理出 $0$ 到 $p-1$ 的阶乘,所以(对于旧思路)能否用 Wilson 定理并不影响复杂度。

如果模数的某个素因子的次数 $k$ 很高,求 $x \bmod p^k$ 的复杂度 $O(p^k + \log_{p^k} n)$ 就不能容忍了。很自然地,我们会考虑 $x\bmod p$ 与 $x\bmod p^k$ 之间的关系。
(留坑)

hihoCoder #1639 图书馆的更多相关文章

  1. Hihocder 1639 : 图书馆 (组合数+唯一分解 求最后一位)(妙)

    给定n,(n<=10^3),然后输入n的数a[i],(a[i]<=1e10),求ans=(a1+a2+a3...an)! / (a1!*a2!*a3!...an!) 的结果的最一位数. 适 ...

  2. hihoCoder 1383 : The Book List(书目表)

    hihoCoder #1383 : The Book List(书目表) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 The histo ...

  3. hihocoder -1121-二分图的判定

    hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...

  4. Hihocoder 太阁最新面经算法竞赛18

    Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...

  5. hihoCoder太阁最新面经算法竞赛15

    hihoCoder太阁最新面经算法竞赛15 Link: http://hihocoder.com/contest/hihointerview24 题目1 : Boarding Passes 时间限制: ...

  6. 【hihoCoder 1454】【hiho挑战赛25】【坑】Rikka with Tree II

    http://hihocoder.com/problemset/problem/1454 调了好长时间,谜之WA... 等我以后学好dp再来看为什么吧,先弃坑(╯‵□′)╯︵┻━┻ #include& ...

  7. 【hihocoder#1413】Rikka with String 后缀自动机 + 差分

    搞了一上午+接近一下午这个题,然后被屠了个稀烂,默默仰慕一晚上学会SAM的以及半天4道SAM的hxy大爷. 题目链接:http://hihocoder.com/problemset/problem/1 ...

  8. 【hihoCoder】1148:2月29日

    问题:http://hihocoder.com/problemset/problem/1148 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 思路: 1. 将问题转换成求两个日 ...

  9. 【hihoCoder】1288 : Font Size

    题目:http://hihocoder.com/problemset/problem/1288 手机屏幕大小为 W(宽) * H(长),一篇文章有N段,每段有ai个字,要求使得该文章占用的页数不超过P ...

随机推荐

  1. iOS 中架构模式的浅显理解

    我们开发软件中应用各种模式,主要是为了 职责划分:一个类只做一件事 易用,可维护,方便扩展 解耦,相互独立,可单独测试 各种设计模式其实都是在解决上面的问题,让我们对比看看吧. 一.如何理解MVC设计 ...

  2. python全栈开发-前方高能-函数进阶

    python_day_10 一.今日主要内容 1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序: 位置,*args,默认值,**kwargs 在形参上 ...

  3. python爬虫之requests库

    在python爬虫中,要想获取url的原网页,就要用到众所周知的强大好用的requests库,在2018年python文档年度总结中,requests库使用率排行第一,接下来就开始简单的使用reque ...

  4. Unity面试问题归总

    Unity面试问题归总 C#中Struct和Class的区别 Struct是Class的一种 A*寻路 https://blog.csdn.net/windcao/article/details/15 ...

  5. 622.设计循环队列 javascript实现

    设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为“环形缓冲器”. 循环队列的一个好处是我们可以利用这个队列 ...

  6. CSS Grid布局指南

    简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式.如我们所知,CSS 总是用于网页的样式设置,但它并没有起到 ...

  7. 补充的css知识点

    1.文字一行显示   超出的用...表示 .ellipsis{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  8. 03慕课网《进击Node.js基础(一)》API-URL网址解析

    url url.parse(url,query,host);解析域名 url必须,地址字符串 query可选 host 可选:在不清楚协议时正确解析 querystring 字符串和对象之间互相解析 ...

  9. c# apache服务器请求得到数据(初级)

    1.代码: string data = new WebClient().DownloadString("http://localhost:81/123.txt");

  10. HDU 5203 Rikka with wood sticks 分类讨论

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5203 bc(chinese):http://bestcoder.hdu.edu.cn/con ...