题目就不再发了,大致意思就是给你一个十进制数n,算出阶乘后转换成K进制的数,你来算一下它的位数。

坑点在哪呢,就是这个数可能算阶乘的时候没放弄了,比如1000000,做过最多单算阶乘的题也就是让你算到10000,所以这个如果按正常步骤来写肯定不行啦。

本题主要运用两个定理:

1丶 十进制位数就是 (int)log10(n),比如,1234,就是4,55555位数就是5。

对应K进制位数就是logk(n),但是math.h或者库函数里边log函数的底数只有固定的几个能直接用的,所以需要用到换底公式啦

2丶:loga(n)=logm(n)/logm(a)=ln(n)/ln(a);

3丶:核心思想  要求K进制位数:logk(n!)=ln(n!)/lnk + 1={ln(1)+ln(2)+ln(3)+...+ln(n)}/lnk  +  1;

AC代码如下:大家看的时候可以自己再理解理解看看有没有更好的方法来解这道题啦,我这水平也有限,代码可能还不够完善呢。

  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<string.h>
  4. #define ll long long
  5. double aa[];
  6. int main()
  7. { int t,c,m,n,i;
  8. double ww;
  9. scanf("%d",&t);
  10. memset(aa,,sizeof(aa));
  11. for(i=;i<=;i++)
  12. aa[i]+=aa[i-]+log(i);//打个表来存一下前1000000个数的log(阶乘),会节省很多时间的
  13. for(int i=;i<=t;i++)
  14. {
  15. scanf("%d%d",&m,&n);
  16. if(m==)
  17. printf("Case %d: 1\n",i);
  18. else
  19. {
  20. ww=aa[m];//此处两行就是上边我介绍的核心思想了
  21. ww=ww/log(n)+;//至于为什么+1,自己再想想啦
  22. printf("Case %d: %d\n",i,(int)ww);
  23. }
  24. }
  25. return ;
  26. }

Digits of Factorial LightOJ - 1045的更多相关文章

  1. Digits of Factorial LightOJ - 1045(数学题?)

    原文地址: https://blog.csdn.net/fenghoumilin/article/details/52293910 题意:求 n 的阶乘在 base 进制下的位数,这里有一个简单的方法 ...

  2. light oj 1045 - Digits of Factorial K进制下N!的位数

    1045 - Digits of Factorial Factorial of an integer is defined by the following function f(0) = 1 f(n ...

  3. LightOJ Beginners Problems 部分题解

    相关代码请戳 https://coding.net/u/tiny656/p/LightOJ/git 1006 Hex-a-bonacci. 用数组模拟记录结果,注意取模 1008 Fibsieve's ...

  4. 专题[vjudge] - 数论0.1

    专题[vjudge] - 数论0.1 web-address : https://cn.vjudge.net/contest/176171 A - Mathematically Hard 题意就是定义 ...

  5. LOJ N!在不同进制的位数

    lightoj1045 - Digits of Factorial (N!不同进制的位数) 对于一个B进制的数,只需要对其取以B的对数就可以得到他在B进制情况下的位数(取了对数之后可能为小数,所以还需 ...

  6. Problem 34

    Problem 34 https://projecteuler.net/problem=34 145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 1 ...

  7. LeetCode172 Factorial Trailing Zeroes. LeetCode258 Add Digits. LeetCode268 Missing Number

    数学题 172. Factorial Trailing Zeroes Given an integer n, return the number of trailing zeroes in n!. N ...

  8. Intelligent Factorial Factorization LightOJ - 1035(水题)

    就是暴力嘛...很水的一个题... 不好意思交都... #include <iostream> #include <cstdio> #include <sstream&g ...

  9. CodeForces 515C. Drazil and Factorial

    C. Drazil and Factorial time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

随机推荐

  1. The Little Prince-12/10

    The Little Prince-12/10 审判自己比审判别人难多了.如果你成功地正确审判了自己,那么你就是一个真正的智者了. ————确实,正视自己是非常难的人生准则.以人为镜,可以明得失,从别 ...

  2. ConvertUtils.register(new DateConverter(null), java.util.Date.class)使用

    在我们使用BeanUtils.copyProperties(dest,orig)将一个类的属性赋值给另一个类的时候 如果类中存在 Date类型的转换可能会报"no value specifi ...

  3. ZYNQ学习之路1. Linux最小系统构建

    https://blog.csdn.net/u010580016/article/details/80430138?utm_source=blogxgwz1 开发环境:window10, vivado ...

  4. MySQL 跨库主从

    一个线上需求,要求主从两库的数据库名字不一样, 在从库上做如下配置: replicate-rewrite-db=DB_1->DB_1_online replicate-rewrite-db=DB ...

  5. v-on事件绑定指令

    v-on:事件绑定 v-on简写:@ 绑定click事件时: 代码: <script> window.onload= () =>{ let vm=new Vue({ el:'#two ...

  6. tp5 本地安装和调试的问题

    安装的时候用官方下载的包或者用composer指定版本号,不要用git,会安装最新的包. 本地配置域名的时候出错,要不就是500要不就是找不到文件,原因是目录路径里的反斜杆加字母t被转义了,改成正斜杠 ...

  7. Selenium Webdriver弹出框的种种类型

    普通弹出框 div 一般这种 弹出框都属于dom的一部分,我们查看一下页面源码就可以定位到改弹出框了,然后定位下右上角的那个关闭, 这里有id,所以很方便通过 dr.findElement(By.id ...

  8. docker-compose安装与部署项目

    安装: 1.curl安装慢的问题 解决:改用pip安装,需要先安装pip相关,参照: https://www.cnblogs.com/YatHo/p/7815400.html 2.pip安装依赖库re ...

  9. 102. Binary Tree Level Order Traversal 广度优先遍历

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  10. 局域网不能访问本机IIS网站的解决方法

    背景:Win7环境下,本机能访问本机IIS网站,但局域网其它电脑访问不了. 解决方法: 一.如果IIS网站是80端口:点击右下角“电脑”图标 -> 点击“打开网络和共享中心” -> 在弹出 ...