通过Java代码,计算阿尔法乘积

题目描述:

资源限制 时间限制:1.0s 内存限制:256.0MB
计算一个无符号整数的阿尔法乘积。
对于一个无符号整数x来说,阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。

例子

例如,输入4018224312的阿尔法乘积等于8
它是经过以下的几个步骤计算出来的:
被计算值 ⇒ 被计算值中需要阿尔法计算的值 ⇒ 计算结果
4018224312⇒418224312⇒3072
3072⇒372⇒42
42 ⇒ 4*2 ⇒ 8
输入: 4018224312 输出: 8

解题思路

对输入的n取余,大于零相乘,并记录每次相乘的值,循环计算,等到n等于个位数时即可跳出循环。

import java.util.Scanner;
/**
 * 
 * @author hf
 */
public class Blogs1 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		long n = scanner.nextLong();
		// long n = 4018224312L; //eg
		long temp = 0; // 定义一个临时变量作为中间值
		int sum = 1; // 每一轮的阿尔法乘积值
		// 条件一:如果x是一个个位数,那么它的阿尔法乘积就是它本身;即等到n等于个位数时即可跳出循环
		while (n >= 10) {
			temp = n; // 赋值临时变量
			// 条件二:n大于10时,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积,
			// 即n这整个数,所有大于零的数相乘,并记录每次相乘的值
			while (temp > 0) {
				// 得到每一位并判断是否大于零
				if (temp % 10 != 0) {
					sum *= (temp % 10);
				}
				temp /= 10; // 不管数字是否大于零,循环都要消掉最后一位
			}
			n = sum; // 将本轮得到的阿尔法乘积值赋给n
			sum = 1; // 阿尔法乘积值清1
		}
		System.out.println(n);
		scanner.close();
	}
}

案例结果

案例结果

猜你喜欢

转载自blog.csdn.net/qq_45481524/article/details/107167177
今日推荐