【bzoj3000】Big Number 数论
题目描述
输入
有多组输入数据,每组输入数据各一行,每行两个数——N,K
输出
每行一个数为输出结果。
样例输入
2 5
2 10
10 10
100 200
样例输出
1
1
7
69
题解
数论
题目转化一下变为求$\lfloor\log_kn!\rfloor+1$,使用换底公式,问题转化为求$\log n$。
$n$有$2^31$之大,显然不能暴力去求。
这里需要用到Stirling公式:$n!\approx\sqrt{2\pi n}(\frac ne)^n$。这个公式在$n$较大时比较精确,因此可以直接套用;当$n$较小时精确度没有那么高,因此需要小范围暴力。
直接使用cmath中的函数对右半部分取对数即可(右半部分化简结果为$\frac 12\log 2\pi n$+n\log\frac ne),再除以$\log k$,下取整+1即为答案。
注意需要long long。
#include <cmath>
#include <cstdio>
const double pi = acos(-1) , e = exp(1);
int main()
{
int n , k , i;
while(~scanf("%d%d" , &n , &k))
{
if(n <= 100)
{
double ans = 0;
for(i = 1 ; i <= n ; i ++ ) ans += log(i);
printf("%d\n" , (int)floor(ans / log(k)) + 1);
}
else printf("%lld\n" , (long long)floor((log(2 * pi * n) / 2 + log(n / e) * n) / log(k)) + 1);
}
return 0;
}
【bzoj3000】Big Number 数论的更多相关文章
- bzoj3000 Big Number 数论,斯特林公式
Description 给你两个整数N和K,要求你输出N!的K进制的位数. Input 有多组输入数据,每组输入数据各一行,每行两个数——N,K Output 每行一个数为输出结果 Sample In ...
- Leetcode 263 Ugly Number 数论 类似质因数分解
Ugly Number的质因数仅为2,3,5 将输入的数分别除以2,3,5直到不能除,看是否为1,为1的是Ugly Number,其他则不是. class Solution { public: boo ...
- BZOJ3000 Big Number
由Stirling公式: $$n! \approx \sqrt{2 \pi n} (\frac{n}{e})^n$$ 故:$$\begin{align} ans &= log_k n! + 1 ...
- [POJ3696]The Luckiest number(数论)
题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...
- Leetcode 9 Palindrome Number 数论
判断一个数是否是回文数 方法是将数回转,看回转的数和原数是否相同 class Solution { public: bool isPalindrome(int x) { ) return false; ...
- [BZOJ3000] Big Number (Stirling公式)
Description 给你两个整数N和K,要求你输出N!的K进制的位数. Input 有多组输入数据,每组输入数据各一行,每行两个数——N,K Output 每行一个数为输出结果. Sample I ...
- [BZOJ3000]Big Number(斯特林公式)
求n!在k进制下的位数,n<=1e18 斯特林公式:$n!\approx \sqrt{2\pi n}(\frac{n}{e})^n$ 在n很大的时候有较好的精度保证. $\log_{k}n!+1 ...
- ACM在线模板
转载自:https://blog.csdn.net/f_zyj/article/details/51594851 Index 分类细则 说起分类准则,我也是很头疼,毕竟对于很多算法,他并不是单调的,而 ...
- acm 模板
Index 分类细则 说起分类准则,我也是很头疼,毕竟对于很多算法,他并不是单调的,而是多方面的都挂得上钩.所以,从始至终,分类准则一直都是我很纠结的问题. 经过思量,首先分出比较主流的几类:Numb ...
随机推荐
- Percona-Tookit工具包之pt-ioprofile
Preface As a matter of fact,disk IO is the most important factor which tremendously influenc ...
- 虚拟内存设置(解决linux内存不够情况)
一. 虚拟内存介绍 背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的话,会有非常快的读写速度.但是,内存的造价是要高于 ...
- TCP/IP协议模型详解
TCP
- mysql 导出数据字典
使用Navicat工具 查询: SELECT TABLE_SCHEMA AS '数据库', TABLE_NAME AS '表名', COLUMN_NAME AS '字段名', COLUMN_TYPE ...
- 如何解决thinkphp5中验证码常见问题?
对于thinkphp如何实现验证码,我这里就不介绍了.直接看之前的文章 http://www.cnblogs.com/qqblog/p/6639419.html.下面,我能想出来的是,我自己在开发过程 ...
- 微信小程序横向滚动
<scroll-view scroll-x="true" style=" white-space: nowrap; display: flex" > ...
- Python基本图形绘制
turtle的一个画布空间最小单位是像素 turtle的绘制窗体:turtle.stup(width,heigth,startx,starty) 四个参数中后两个可选 turtle空间坐标体系:tur ...
- nginx配置SSL证书/强制跳转与非强制跳转
支持强制跳转HTTPS server { listen 80; server_name www.test.com; rewrite ^(.*)$ https://${server_name}$1 pe ...
- webDriver + Firefox 浏览器 完美兼容
搞java最烦的就是不同版本的适配问题.现分享下实测成功的案例. Firefox:4.0.1 selenium:selenium-server-standalone-2.43.1.jar 下面这个链接 ...
- ionic 打包apk Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]
错误日志如下: Built the following apk(s): /Users/hongye0/Documents/project/haitoujiaApp/platforms/android/ ...