bzoj1308: fac
来源:互联网 发布:广西航信金税盘软件 编辑:程序博客网 时间:2024/06/12 03:44
传送门
题目看上去非常不可做。
考虑缩小答案规模。
首先将25!拆分:
将每一组末尾的模5为0的数除以5,并且和前面的2消掉,得到
前面每一坨东西末尾都是2。
于是我们没进行依次这样的操作,规模变为原来的1/5
多迭代几次就行了。
#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#define N 100100using namespace std;char s[505];int a[505];int biao[25]={ 1,1,2,6,4, 2,2,4,2,8, 8,8,6,8,2, 8,8,6,8,2, 4,4,8,4,6};int mi[4]={6,2,4,8};int solve(int *a){ int m,x; m=a[2]*10+a[1]; if (a[0]<=2&&m<25) return biao[m]; m=0; int b[505]; memset(b,0,sizeof(b)); for (int i=a[0];i>=1;i--){ m=m*10+a[i]; b[i]=m/25; m%=25; } b[0]=a[0]; while (b[0]&&!b[b[0]]) b[0]--; x=b[1]+b[2]*10; for (int i=1;i<=a[0];i++) b[i]*=5; for (int i=1;i<=a[0];i++){ b[i+1]+=b[i]/10; b[i]%=10; } if (b[b[0]+1]) b[0]++; return solve(b)*biao[m]*mi[x%4]%10;}int main(){ while (scanf("%s",s+1)!=EOF){ memset(a,0,sizeof(a)); a[0]=strlen(s+1); for (int i=1;i<=a[0];i++) a[i]=s[i]-'0'; for (int i=1,j=a[0];i<j;i++,j--) swap(a[i],a[j]); printf("%d\n",solve(a)); }}
阅读全文
0 0
- bzoj1308: fac
- fac method
- 大数据:fac
- fac()阶乘函数的写法
- fac函数求n的阶乘--C++
- 2017日照夏令营 day6 t1 fac
- AJAX未来应用开源组织FAC网站开通了!
- AJAX未来应用开源组织FAC网站开通了!
- IMEI为TAC + FAC + SNR + SP(国际移动台识别码)
- Java compiler level does not match the version of the installed Java project fac
- Java compiler level does not match the version of the installed Java project fac
- Java compiler level does not match the version of the installed Java project fac
- Java compiler level does not match the version of the installed Java project fac
- error C2352: "fac::inrange": 非静态成员函数的非法调用
- Java compiler level does not match the version of the installed Java project fac
- 调用函数fac计算值和求标准差的题目的问题
- Maven构建项目后项目报Error错误Java compiler level does not match the version of the installed Java project fac
- 求 a!+b!+c!的值,用一个函数 fac(n)求 n!。a,b,c 的值由主函数输入,最终得到的值在主函数中输出
- Linux学习篇第三章之~配置电子邮件传输(dovecot)
- 第一个网页
- GEC210 系统更新说明
- Prime Path POJ
- #HDU3415#Max Sum of Max-K-sub-sequence(单调队列基础)
- bzoj1308: fac
- The Smallest String Concatenation CodeForces
- RxJava+RxAndroid 初学者一看一敲就懂
- Retrofit+RxJava进行网络请求流程解析
- POJ 1316 Self Numbers 笔记
- Hdu 3068最长回文——Manacher算法
- Linux ubuntu 升级OpenSSL教程
- 使用感知机创建XOR网络
- Linux中定位内存泄漏