lightoj 1045 - Digits of Factorial 【数学】
2016-05-01 17:01
441 查看
题目链接:lightoj 1045 - Digits of Factorial
1045 - Digits of Factorial
PDF (English) Statistics Forum
Time Limit: 2 second(s) Memory Limit: 32 MB
Factorial of an integer is defined by the following function
f(0) = 1
f(n) = f(n - 1) * n, if(n > 0)
So, factorial of 5 is 120. But in different bases, the factorial may be different. For example, factorial of 5 in base 8 is 170.
In this problem, you have to find the number of digit(s) of the factorial of an integer in a certain base.
Input
Input starts with an integer T (≤ 50000), denoting the number of test cases.
Each case begins with two integers n (0 ≤ n ≤ 106) and base (2 ≤ base ≤ 1000). Both of these integers will be given in decimal.
Output
For each case of input you have to print the case number and the digit(s) of factorial n in the given base.
Sample Input
Output for Sample Input
5
5 10
8 10
22 3
1000000 2
0 100
Case 1: 3
Case 2: 5
Case 3: 45
Case 4: 18488885
Case 5: 1
题意:给定一个数n,用base进制表示n!。
思路:换底公式 搞搞就好了。。。
AC代码:
1045 - Digits of Factorial
PDF (English) Statistics Forum
Time Limit: 2 second(s) Memory Limit: 32 MB
Factorial of an integer is defined by the following function
f(0) = 1
f(n) = f(n - 1) * n, if(n > 0)
So, factorial of 5 is 120. But in different bases, the factorial may be different. For example, factorial of 5 in base 8 is 170.
In this problem, you have to find the number of digit(s) of the factorial of an integer in a certain base.
Input
Input starts with an integer T (≤ 50000), denoting the number of test cases.
Each case begins with two integers n (0 ≤ n ≤ 106) and base (2 ≤ base ≤ 1000). Both of these integers will be given in decimal.
Output
For each case of input you have to print the case number and the digit(s) of factorial n in the given base.
Sample Input
Output for Sample Input
5
5 10
8 10
22 3
1000000 2
0 100
Case 1: 3
Case 2: 5
Case 3: 45
Case 4: 18488885
Case 5: 1
题意:给定一个数n,用base进制表示n!。
思路:换底公式 搞搞就好了。。。
AC代码:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #define CLR(a, b) memset(a, (b), sizeof(a)) using namespace std; typedef long long LL; const int MAXN = 1e6 +10; const int INF = 0x3f3f3f3f; double ans[MAXN]; int main() { ans[0] = 0; for(int i = 1; i <= 1000000; i++) { ans[i] = ans[i-1] + log10(i*1.0); } int t, kcase = 1; scanf("%d", &t); while(t--) { int n, base; scanf("%d%d", &n, &base); if(n == 0) { printf("Case %d: 1\n", kcase++); continue; } printf("Case %d: %lld\n", kcase++, (LL)ceil(ans / log10(base*1.0))); } return 0; }
相关文章推荐
- leetcode 062 Unique Paths
- 练习
- jsp页面中插入css样式的三种方法总结
- 图片无损压缩工具
- OSGI入门环境搭建及相关概念
- ubuntu15.04装wine qq
- 三位数乘一位数
- 20145211 《Java程序设计》第九周学习总结——垂死病中惊坐起
- IO学习(七)用字符流进行纯文本的读取和写出
- 两位数乘一位数
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- Codeforces 667C Reberland Linguistics (DP)
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- Java注解(三) 自定义注解与提取注解
- [kuangbin带你飞]专题一 简单搜索-J - Fire!
- poj 1088 滑雪
- Android活动被回收了的处理方式
- 经典闭包例子详解
- 原型图初接触