UVA10061 How many zero's and how many digits ?
来源:互联网 发布:ios彩票app源码 编辑:程序博客网 时间:2024/05/22 09:05
Problem G
How many zeros and how many digits?
Input: standard input
Output: standard output
Given a decimal integer number you will have to find out how many trailing zeros will be there in its factorial in a given number system and also you will have to find how many digits will its factorial have in a given number system? You can assume that for a b based number system there are b different symbols to denote values ranging from 0 ...b-1.
Input
There will be several lines of input. Each line makes a block. Each line will contain a decimal number N (a 20bit unsigned number) and a decimal number B (1<B<=800), which is the base of the number system you have to consider. As for example 5! = 120 (in decimal) but it is 78 in hexadecimal number system. So in Hexadecimal 5! has no trailing zeros
Output
For each line of input output in a single line how many trailing zeros will the factorial of that number have in the given number system and also how many digits will the factorial of that number have in that given number system. Separate these two numbers with a single space. You can be sure that the number of trailing zeros or the number of digits will not be greater than 2^31-1
Sample Input:
2 10
5 16
5 10
Sample Output:
0 10 2
1 3
题目意思就是给两个数 m,n。。然后求出 m的阶乘变为n进制,有几个0,有几位数。。。
如果直接求阶乘绝对就是大到存不了。。
先说如何求末尾几个0;10进制数的末尾几个零就是求他的因子里出现了几个5.因为10 = 2 × 5;出现一个因子5就会有个0;
如果是16进制 16 =2×2×2×2就是每出现4个2 就有个0;总结就是n进制的话。求n的最大质因数,和最大质因数的数量。
然后把所有的数分解出最大质因数,数量除以n分解出来最大质因数数量。。。
位数的话就是log(m) / log(n)。。注意为了精度要加上1e-9。。。
AC代码:
#include<stdio.h>#include<cmath>#include<string.h>int count[10485800];int max(int n,int b) {memset(count,0,sizeof(count));int l;double count2 = 0;for ( int i = 2;i <= b ;i++) {while (b % i == 0 ) {l = i;count[l]++;b /= i;}}for (int i = 2;i <= n ;i++) {int k = i;while( k % l == 0) {count2++;k /= l;}}count2 /= count[l];return (int) count2;}int main () {double num;double base;double res;double res2;while (scanf("%lf%lf",&num,&base) != EOF ) {res = 0;for (double i = 1 ; i <= num ;i++) {res = res + log(i);} intlen = (res / log(base) + 1e-10);printf("%d %d\n",max((int)num,(int)base),len + 1);}return 0;}
- UVA10061 How many zero's and how many digits ?
- UVa10061 How many zeros and how many digits?
- uva 10061 - How many zero's and how many digits ?
- uva 10061 - How many zero's and how many digits ?
- 10061 - How many zero's and how many digits ?
- UVa 10061 - How many zero's and how many digits ?
- UVA 10061 How many zero's and how many digits ?
- uva 10061 - How many zero's and how many digits ?
- 10061 - How many zero's and how many digits ?
- UVa 10061: How many zero's and how many digits?
- uva 10061 - How many zero's and how many digits
- uva 10061 How many zero's and how many digits ?
- 10061 - How many zero's and how many digits ?
- 10061 - How many zero's and how many digits ?
- uva 10061: How many zero's and how many digits?
- UVa 10061 - How many zero's and how many digits ?
- UVa 10061 - How many zero's and how many digits ?
- UVA 10061 How many zero's and how many digits ?
- 国外大学面试题
- Altium Designer 14.3.13 Build 34012种子
- 三种xml解析的区别
- POJ1088 滑雪 dp
- Java系统程序员修炼之道
- UVA10061 How many zero's and how many digits ?
- OCR的恢复使用
- 实现全选和取消全选(JavaScript控制CheckBox 的全选与取消全选)
- 经纬财富:湖州黄金价格波动需要看哪些因素?
- Cash Machine - POJ 1276 背包
- Ubuntu下adb 显示insufficient permissions for device,或Eclipse中DDMS设备显示?????
- 如何实现可动态调整隐藏header的listview
- c# 命名空间、dll、与函数
- PHP redis操作类 个人总结