版权声明:本文为博主原创文章。未经博主同意不得转载。

https://blog.csdn.net/mobius_strip/article/details/32701577

题目:给你一个数字n,一个数字b,问n!

转化成b进制后的位数和尾数的0的个数。

分析:数论。

末尾的0。当10进制时。有公式 f(n)= f(n/5)+ n/5;

(令k = n/5 则 n! = 5k * 5(k-1) * ... * 10 * 5 * a  = 5^k * k! * a    {a为不能整除5的部分})

( 即 f(n) = k + f(k) = n/5 + f( n/5 )   { f(0) = 0 } )

相似可推导 f( n, b ) = f( n/o ) + n/o,o为b的最大质因子p组成的最大因子

这里找到全部的,n的素因子的最大指数o = p^r。(p为素数。p^r < b < p^(r+1)),找到最小的解。

{被划掉的部分是原来的,错的写法,多谢HTT_H的的指正}

求位数注意不要用斯特林公式,精度有问题(⊙_⊙),直接地推打表计算。

说明:注意精度。

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>#define min(a,b) (a)<(b)?

(a):(b) using namespace std; double dig[1<<20]; int f( int n, int b ) { if ( n < b ) return 0; else return n/b + f( n/b, b ); } int main() { dig[0] = 0.0; for ( int i = 1 ; i < (1<<20) ; ++ i ) dig[i] = dig[i-1] + log(i+0.0); int b,n,mbase,base,count,Min; while ( cin >> n >> b ) { //计算base的最大质因数 mbase = 1,base = b,Min = -1; for ( int i = 2 ; i <= base ; ++ i ) { count = 0; while ( base%i == 0 ) { mbase = i; base /= i; count ++; } if ( count ) { if ( Min == -1 ) Min = f( n, mbase )/count; else Min = min( Min, f( n, mbase )/count ); } } cout << Min << " "; cout << int(dig[n]/log(b+0.0)+1e-8+1) << endl; } return 0; }

转载于:https://www.cnblogs.com/xfgnongmin/p/10689805.html

UVa 10061 - How many zero's and how many digits ?相关推荐

  1. UVa 10061 How many zero's and how many digits?

    方法: factorial mod, logarithm 求trailing zeros,其实就是factorial mod 的应用, 求长度,利用log 函数.需要注意的是,答案为int(log(n ...

  2. uva 10061——How many zero\'s and how many digits ?

    题意:这道题开始是卡了很久的,题意是给定一个数n然后让你求B进制下n!有多少个零,和有多少位数,咋一看,是高精度,如果数论不是很熟系. 思路:开始是直接抛弃高精度的一来是存不下,二来没办法短时间计算出 ...

  3. UVA - 10061 How many zero#39;s and how many digits ?

    n!=x*b^y, 当x为正整数时,最大的y就是n!末尾0的个数了, 把n,b分别拆成素因子相乘的形式: 比如, n=5,b=16 n=5,b=2^4, 非常明显,末尾0的个数为0 10进制时,n!= ...

  4. Uva 10061 进制问题

    题目大意:让求n!在base进制下的位数以及末尾0的连续个数. 多少位 log_{10}256=log_{10}210^2+log_{10}510^1+log_{10}6*10^0 可以发现,只和最高 ...

  5. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  6. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  7. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  8. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

  9. UVA 11752 超级幂

    UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

  10. UVa 11174 - Stand in a Line

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

最新文章

  1. c++用一级运算比较大小_1.1.2 python基本数据类型与运算符
  2. Vue.js-Day03-AM【超级详细:Node.js环境安装、安装淘宝镜像(Win、Mac)、安装Vue脚手架、初始化Vue项目-命令解释(Vscode、命令行窗口)、目录介绍、Vue文件介绍】
  3. Elastic-Job配置步骤
  4. 如何编写用户操作手册
  5. 高中数学40分怎么办_2019年第35届全国高中数学联赛试题及参考答案
  6. 二叉树——淘汰赛(洛谷 P4715)
  7. matlab的矩阵编译器,MATLAB引擎方式实现VC与MATLAB混合编程
  8. SlickEdit配置保存路径
  9. Windows 启动 Idea 报错 if you already hava a 64-bit JDK ... 以及 failed to create jvm...
  10. python九九乘法表代码中的i+1的意思_python---九九乘法表代码
  11. ZPL II 命令参考
  12. css div img等元素居中对齐
  13. rk3399 android 9.0 skype强制切换到前置摄像头
  14. Raster Map光栅图 VS Vector Map矢量图
  15. uniapp app端根据支付宝qr链接 直接打开支付宝app支付页面
  16. 神州信息“六合上甲”再获殊荣
  17. SpringBoot下结合使用Cacheable、CacheEvict和Scheduled注解轻松实现可过期本地缓存
  18. 解决TeamViewer软件提示试用期已到期无法进行远程操作
  19. java基础-1 基础知识
  20. require(): open_basedir restriction in effect错误解决

热门文章

  1. 基于SpringBoot的答题系统
  2. Leetcode之路径总和II
  3. 3.26 Tensorflow 实验记录
  4. Android 数据存储/访问 之 SharedPreferences(偏好设定)
  5. MySQL sql语句字段截取前几位,后几位等
  6. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_12-删除页面-服务端-接口开发...
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_2_编码引出的问题_FileReader读取GBK格式文件...
  8. java基础---线程
  9. MQ_ActiveMQ环境部署+C#推送和接收消息
  10. [bzoj2594][Wc2006]水管局长数据加强版