列表

详情


NC210561. 数学实验

描述

给出一个数字n,需要不断地将所有数位上的值做乘法运算,直至最后数字不发生变化为止。
问最后生成的数字为多少?

输入描述

示例1

输入:

10

输出:

0

示例2

输入:

55

输出:

0

说明:

55 -> 5 * 5 = 25 -> 2 * 5 = 10 -> 1 * 0 = 0

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python(2.7.3) 解法, 执行用时: 19ms, 内存消耗: 5752K, 提交时间: 2020-12-18 20:03:01

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
# 
# @param n long长整型 老师给牛牛的数字
# @return int整型
#
class Solution:

    def mathexp(self, n):
        while len(str(n)) > 1:
            res = 1
            for a in map(int, str(n)):
                res *= a
            n = res
        return n

C(clang11) 解法, 执行用时: 3ms, 内存消耗: 516K, 提交时间: 2020-12-20 19:27:57

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param n long长整型 老师给牛牛的数字
 * @return int整型
 */
int mathexp(long long n ) {
    // write code here
    if(n<10)return n;
    long res=1;
    
    do res*=n%10;
    while(n/=10);
      return mathexp(res);
}

PHP 解法, 执行用时: 13ms, 内存消耗: 3500K, 提交时间: 2021-10-25 21:06:30

<?php


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param n long长整型 老师给牛牛的数字
 * @return int整型
 */
function mathexp( $n )
{
    while(count(str_split($n)) > 1) {
        $n = array_product(str_split($n));
    }
    return $n;
}

C++(clang++11) 解法, 执行用时: 2ms, 内存消耗: 380K, 提交时间: 2020-12-18 21:18:30

class Solution {
public:
    int mathexp(long long n) {
        while(n>9){
		long long t=n,s=1;
		while(n){
			s*=(n%10);
			n/=10;
		}
		if(s==t){
			return s;
		}
		n=s;
	}
	return n;
    }
};

Python3(3.9) 解法, 执行用时: 21ms, 内存消耗: 3024K, 提交时间: 2020-12-18 20:12:09

def cal(strings):
    x = 1
    for i in strings:
        x *= int(i)
    if x >= 10:
        return cal(str(x))
    return x

str1 = input()
print(cal(str1))

上一题