P2529 [SHOI2001]击鼓传花

题意:求出\(n!\)末尾最后一位非0数字

数据范围:\(n<=10^{100}\)


我们从简单的开始考虑

1.显然,\(n!\)可以被这么表示

\(n!=c \times 2^a \times 5^b\)

显然有\(a>b\)

2.末尾的元素即为\(c \%10 \times 2^{a-b} \%10\)

显然这个复杂度是我们所不能接受的

我们发现\(5\)很特殊

我们把所有\(5\)的倍数都取出来(注意取出的是\(5\)的倍数而不是因数\(5\)),给每个\(5\)配一个\(2\)

相当于把\(5*1,5*2,5*3,...,5*n\)中的\(5\)约去,发现剩下的是一个规模1/5的相同子问题

令\(fac(i)\)表示\(i!\)的末尾非0数字,则有\(fac(i)=fac(\lfloor i/5 \rfloor) \times ? \% 10\)

我们想办法求出\(?\)的贡献

因为因子\(2\)消不完,所以末尾必须是偶数

发现剩下的数可以直接\(mod\) \(10\)了

把每\(20\)位分成一块,对末位的贡献为\(6\)

因为$6 \times $任意偶数,末尾不变

所以答案只需要把20位以内的额外贡献找到就可以

我们考虑直接把这20位打表,然后递归处理子问题

复杂度可以接受(高精度我不会算)


Code:

#include <cstdio>
#include <cstring>
const int N=102;
struct l_num
{
int num[N];
l_num()
{
memset(num,0,sizeof(num));
}
l_num(char c[])
{
memset(num,0,sizeof(num));
num[0]=strlen(c);
for(int i=1;i<=num[0];i++)
num[i]=c[num[0]-i]-'0';
}
l_num friend operator /(l_num n1,int n2)
{
for(int i=n1.num[0];i>1;i--)
{
n1.num[i-1]+=n1.num[i]%n2*10;
n1.num[i]/=n2;
}
n1.num[1]/=n2;
if(!n1.num[n1.num[0]]) --n1.num[0];
return n1;
}
int friend operator %(l_num n1,int n2)
{
return n1.num[0]==1?n1.num[1]:(n1.num[2]&1)*10+n1.num[1];
}
};
int init[21]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2,6};
char c[103];
int cal(l_num fac)
{
return fac.num[0]?init[fac%20]*cal(fac/5)%10:1;
}
int main()
{
int t=5;
while(t--)
{
scanf("%s",c);
l_num fac(c);
printf("%d\n",cal(fac));
}
return 0;
}

2018.8.9

洛谷 P2529 [SHOI2001]击鼓传花 解题报告的更多相关文章

  1. 洛谷 P2527 [SHOI2001]Panda的烦恼 解题报告

    P2527 [SHOI2001]Panda的烦恼 题目描述 panda是个数学怪人,他非常喜欢研究跟别人相反的事情.最近他正在研究筛法,众所周知,对一个范围内的整数,经过筛法处理以后,剩下的全部都是质 ...

  2. 洛谷 P2530 [SHOI2001]化工厂装箱员 解题报告

    P2530 [SHOI2001]化工厂装箱员 题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B ...

  3. 洛谷 P2323 [HNOI2006]公路修建问题 解题报告

    P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ...

  4. 洛谷 P1852 [国家集训队]跳跳棋 解题报告

    P1852 [国家集训队]跳跳棋 题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在\(a\),\(b\), ...

  5. 洛谷 P2611 [ZJOI2012]小蓝的好友 解题报告

    P2611 [ZJOI2012]小蓝的好友 题目描述 终于到达了这次选拔赛的最后一题,想必你已经厌倦了小蓝和小白的故事,为了回馈各位比赛选手,此题的主角是贯穿这次比赛的关键人物--小蓝的好友. 在帮小 ...

  6. 洛谷 P2114 [NOI2014]起床困难综合症 解题报告

    P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...

  7. 洛谷 P3299 [SDOI2013]保护出题人 解题报告

    P3299 [SDOI2013]保护出题人 题目描述 出题人铭铭认为给SDOI2012出题太可怕了,因为总要被骂,于是他又给SDOI2013出题了. 参加SDOI2012的小朋友们释放出大量的僵尸,企 ...

  8. 洛谷 P2059 [JLOI2013]卡牌游戏 解题报告

    P2059 [JLOI2013]卡牌游戏 题意 有\(n\)个人玩约瑟夫游戏,有\(m\)张卡,每张卡上有一个正整数,每次庄家有放回的抽一张卡,干掉从庄家起顺时针的第\(k\)个人(计算庄家),干掉的 ...

  9. 洛谷 P2463 [SDOI2008]Sandy的卡片 解题报告

    P2463 [SDOI2008]Sandy的卡片 题意 给\(n(\le 1000)\)串,定义两个串相等为"长度相同,且一个串每个数加某个数与另一个串完全相同",求所有串的最长公 ...

随机推荐

  1. 误删 EhCache 中的数据?

    最近遇到一个问题:在使用ehcache时,通过CacheManager.getCache(chachename).get(key),获取相应的缓存内对象(当时这个对象是个list), 有个同事写个方法 ...

  2. JavaSE库存管理系统项目实战

    需求分析 企业库房用于存放成品.半成品.原材料.工具等物资,一般情况下,这些物资统称为物料.库存管理常见业务包括物资的入库.出库.盘点.退货.报废以及财务核算等,业务逻辑比较复杂,库房信息系统项目开发 ...

  3. ctf题目writeup(2)

    2019.1.29 题目地址: https://www.ichunqiu.com/battalion 1. 点开链接: include "flag.php";$a = @$_REQ ...

  4. Educational Codeforces Round 47 (Rated for Div. 2) :C. Annoying Present(等差求和)

    题目链接:http://codeforces.com/contest/1009/problem/C 解题心得: 题意就是一个初始全为0长度为n的数列,m此操作,每次给你两个数x.d,你需要在数列中选一 ...

  5. python基础之多线程

    概念 进程:进程就是一个程序在一个数据集上的一次动态执行过程 程序:代码 数据集:程序执行过程中需要的资源 进程控制块:完成状态保存的单元 线程:线程是寄托在进程之上,为了提高系统的并发性 线程是进程 ...

  6. web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址

    web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址   Huang Jie Blog .Com-前端开发 http://www.huangjieblog.com/?feed=rs ...

  7. LeetCode高频题目(100)汇总-Java实现

    LeetCode高频题目(100)汇总-Java实现       LeetCode高频题目(100)汇总-Java实现 目录 第01-50题 [Leetcode-easy-1] Two Sum [Le ...

  8. 大数据de 2文章

    点击可免费试用网易有数 文章来源:网易有数的搭积木原则阐述 ,经作者文雯授权发布 wo ceceshi 相关文章:[推荐] SpringBoot入门(五)--自定义配置

  9. 【jQuery】 Ajax

    [jQuery] Ajax $.ajax({ type: "Post", // 发包方式 cache: false, // 是否缓存 contentType: "appl ...

  10. Django笔记 —— 表单(form)

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...