求N个数阶乘末尾除0后的数值。

主要的难点在于要把这个N个数所含的2和5的队数去掉。

网上方法很多很好。 不多说

Last non-zero Digit in N!

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5454    Accepted Submission(s): 1348

Problem Description
The expression N!, read as "N factorial," denotes the product of the first N positive integers, where N is nonnegative. So, for example, 
N N! 
0 1 
1 1 
2 2 
3 6 
4 24 
5 120 
10 3628800

For this problem, you are to write a program that can compute the last non-zero digit of the factorial for N. For example, if your program is asked to compute the last nonzero digit of 5!, your program should produce "2" because 5! = 120, and 2 is the last nonzero digit of 120.

Input
Input to the program is a series of nonnegative integers, each on its own line with no other letters, digits or spaces. For each integer N, you should read the value and compute the last nonzero digit of N!.
Output
For each integer input, the program should print exactly one line of output containing the single last non-zero digit of N!.
Sample Input
1 2 26 125 3125 9999
Sample Output
1 2 4 8 2 8
Source
South Central USA 1997
Recommend
JGShining
#pragma comment(linker, "/STACK:102400000,102400000") #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <map>
#include <queue>
#include <sstream>
#include <iostream>
using namespace std;
#define INF 0x3fffffffint n;
int save[10]={1,1,2,6,4,2,2,4,2,8};
char s[1100];
int d[1100];
int i,ti;
int tmp1;
int cnt;int dfs(int len)
{int tmp=1;for(i=len;i>=0;i--)if(d[i]!=0) break;if(i<0){return 1;}if(i==0){return save[d[0]];}if(d[1]%2==0) tmp=6;else tmp=4;tmp = ( tmp*save[d[0]] )%10;ti=i;for(;i>=0;i--){tmp1=d[i]%5;d[i]/=5;if(i!=0)d[i-1]+=tmp1*10; //将余数向下推
    }return (tmp*dfs(ti))%10;
}int main()
{//freopen("C:\\Users\\Administrator\\Desktop\\in.txt","r",stdin);//freopen("C:\\Users\\Administrator\\Desktop\\in.txt","w",stdout);while(~scanf("%s",s)){//主要是将所有数2和5因子提取出来就可以了,剩下来的取最后一个数即可//然后就是最后一位怎么看了,int len=strlen(s);memset(d,0,sizeof(d));cnt=0;for(int i=0;i<len;i++)d[len-1-i]=s[i]-'0';printf("%d\n",dfs(len-1));}return 0;
}

2015.11.20.。。

又走到这步。 今天看数论的是看不小心瞄到了这题,心想多年前都能做出来,现在怎么没什么想法了。

然后推了半天,自己想出一个解法。

我们可以发现,每乘5个数(1-5,或6-10),相当于乘2.(然后再往5^2 ,5^3...推)

然后就很好做了,把n装化为5进制,然后一下就可以出结果了。

留个代码纪念下。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;char str[10100];
int num[10100];
int ans[10100];int chg(char c)
{return c-'0';
}int main()
{while( scanf("%s",str) != EOF ){int len=strlen(str);for(int i=0;i<len;i++)num[i] = chg( str[i] );int cnt=0;for(int i=0;i<len;i++)if(num[i]==0) cnt++;else break;int wei=0;int from=10,to=5;while( cnt < len ){//然后做一次除法for(int i=cnt;i<len;i++){num[ i+1 ] += (num[i]%to)*from;num[ i ] /= to;}ans[ wei++ ] = num[len]/from;num[len]=0;for(int i=cnt;i<len;i++){if(num[i]==0) cnt++;else break;}}/*for(int i=wei-1;i>=0;i--){printf("%d",ans[i]);}printf("\n");*/int tmp = 1;int sum = 1;for(int i=0;i<wei;i++){int some=ans[i+1]%2==0?0:5;for(int j=1+some;j<=ans[i]+some;j++){sum = (sum*j*tmp);sum = sum%10;}tmp = tmp*2;tmp = tmp%10;}printf("%d\n",sum);}return 0;
}

转载于:https://www.cnblogs.com/chenhuan001/p/3359048.html

hdu1066(经典题)相关推荐

  1. 【数据库原理及应用】经典题库附答案(14章全)——第十四章:分布式数据库系统

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  2. 【数据库原理及应用】经典题库附答案(14章全)——第十三章:面向对象程数据库系统

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  3. 【数据库原理及应用】经典题库附答案(14章全)——第十二章:数据库技术新发展

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  4. 【数据库原理及应用】经典题库附答案(14章全)——第十章:数据库完整性

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  5. 【数据库原理及应用】经典题库附答案(14章全)——第九章:数据库安全性

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  6. 【数据库原理及应用】经典题库附答案(14章全)——第八章:数据库并发控制

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  7. 【数据库原理及应用】经典题库附答案(14章全)——第七章:数据库恢复技术

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  8. 【数据库原理及应用】经典题库附答案(14章全)——第六章:关系数据库设计过程

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

  9. 【数据库原理及应用】经典题库附答案(14章全)——第五章:关系数据理论

    [数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...

最新文章

  1. uniapp设置模板路径页面样式混乱解决办法
  2. C# 版本设计模式(Design Pattern)---------------总序
  3. java设计模式--简单工厂设计模式SimpleFactoryPattern
  4. ajax 原理----初级篇
  5. React with Webpack -1: 介绍Helloworld
  6. mysql第三方工具binlog_mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
  7. [Linux C]重启设备(系统)
  8. python切片表达式3个参数_Python:Base3(函数,切片,迭代,列表生成式)
  9. 自动语音识别的原理是什么,它的作用是什么
  10. java 开发环境 列表_Java 开发环境配置
  11. html5 职工入职后台管理系统_【开源】Net平台的后台管理系统
  12. lsi计算文档相似度
  13. 计算机网络与信息安全公务员,计算机网络技术专业考公务员有些职位?
  14. 通过注册表永久禁用系统UAC功能
  15. 计算机怎么配置IP地址,如何设置电脑IP地址?
  16. html动画 箭头线条,html – 悬停时动画的箭头线
  17. 什么是搜索引擎优化及其重要性
  18. 笔记本内置网卡发射wifi
  19. 个人网页制作(教你制作简单网页)
  20. Java中synchronization和Lock对比

热门文章

  1. Android RecyclerView 列表加载图片宽高适配
  2. Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告
  3. [lct] Luogu P4219 大融合
  4. XV6陷入,中断和驱动程序
  5. jquery animate自定义动画
  6. 6个很棒的PostCSS插件,让您成为一个CSS向导
  7. 【Vue】实例对象的生命周期(方法详解)
  8. Tips--tensorboard在win系统中jupyter notebook上打开方式
  9. Linux驱动(6)--关于uboot
  10. 7-10 找最小的字符串 (15 分)