JAVA n的阶乘在m进制下末尾有多少个0
输入描述:共一行:两个正整数N和M,分别表示给定的证书N以及进制数M
输出描述:共一行,一个整数,表示M的阶乘在M进制表示时其末尾0的数量
package bishi;
import java.util.Scanner;
//n!在m进制下结尾0的个数
public class nJieWei0DeGeShu {
//阶乘
public static long JieCheng(int a){
long i = 1;
while(true){
if(a != 0){
i = i*a;
a--;
}else {
break;
}
}
return i;
}
//进制转换
public void transform(long num,int n){
//参数num为输入的十进制数,参数n为要转换的进制
long array[]=new long[100];
int location=0;
while(num!=0){//当输入的数不为0时循环执行求余和赋值
long remainder=num%n;
num=num/n;
array[location]=remainder;//将结果加入到数组中去
location++;
}
show(array,location-1);
}
//判断结果有多少个0
private void show(long[] arr,int n) {
int k = 0;
for (int i = 0; i <= n; i++) {
//输出结果
/*if(arr[i]>9){
System.out.print((char)(arr[i]+55));
}
else
System.out.print(arr[i]+"");*/
//判断有多少个0
if (arr[i] != 0) {
break;
}else {
k++;
}
}
System.out.println(k);
}
public static void main(String[] args){
nJieWei0DeGeShu t=new nJieWei0DeGeShu();
/*Scanner scanner = new Scanner(System.in);
int[] a = new int[2];
for(int i = 0;i < a.length;i++) {
a[i] = scanner.nextInt();
}*/
//在同一行输入数字,用空格隔开并存入数组。最少要有两个数字
Scanner s = new Scanner(System.in);
String inputStr = s.nextLine();
String[] strArray = inputStr.split(" ");
int[] a = new int[strArray.length];
for(int i = 0 ; i < a.length ; i++){
a[i] = Integer.parseInt(strArray[i]);
}
long b = JieCheng(a[0]);
t.transform(b, a[1]);
}
}