下面展示一些 内联代码片
。
问题
阿尔法乘积
描述
计算一个整数的阿尔法乘积。对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿 尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。例如:4018224312的阿尔法乘积等于8,它是按照以下的步骤来计算的:
4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 →4*2 → 8
编写一个程序,输入一个正整数(该整数不会超过6,000,000),输出它的阿尔法乘积。
输入
输入只有一行,即一个正整数。
输出
输出相应的阿尔法乘积。
输入样例 1
4018224312
输出样例 1
8
来源
蓝桥杯练习系统
代码实现
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
String str = input.next();
int sum = 1;//用于求乘积
while (true) {
ArrayList<Integer>list = new ArrayList<>();
//转换为整型数组
int [] arr = new int [str.length()];
for (int i = 0; i < str.length(); i++) {
arr[i] = Integer.parseInt(str.substring(i, i+1));
}
//将数据添加到集合中
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);
}
//乘积运算
for (int i = 0; i < list.size(); i++) {
if (list.get(i) == 0) {
continue;
}
sum *= list.get(i);
}
//删除集合中所有的元素
for (int i = 0; i < list.size(); i++) {
list.remove(i);
}
//转换成字符串
str = sum + "";
//重新赋值
sum = 1;
//判断位数
if (str.length() == 1) {
break;
}
}
System.out.println(str);
}
}