您的位置:首页 > 其它

How many zero's and how many digits ?

2015-08-06 14:41 330 查看
How many zero's and how many digits ?

大意:

给出一个数字N和进制B,求N!在B进制下,有多少个尾0,有多少位数字;

代码:

#include <stdio.h>
#include <string.h>
#include <cmath>

int flag[1000];

int main(){
int n, b;
while (scanf ("%d %d", &n, &b) != EOF){
double leng = 0;
for (int i = 2; i <= n; i++) {
leng += log10(i);
}
leng = leng / log10(b);
int y = (int)(leng + 0.000001) + 1;
for (int i = 2; i <= n; i++) {
int factor = i;
for (int j = 2; j <= factor && j <= b; j++){
while (factor % j == 0){
flag[j]++;
factor = factor / j;
}
}
}
int zm = 0;
while (1){
int t = b;
for (int j = 2; j <= t; j++){
while (t % j == 0 && flag[j]){
flag[j]--;
t = t / j;
}
}
if (t == 1) {
zm++;
}
else {
break;
}
}
printf ("%d %d\n", zm, y);
memset(flag, 0, sizeof (flag));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: