每日一题 每位数字问题

大概每日一题

首先, 给各位道个歉. 昨天由于沉迷学习忘了更新, 绝对不是忙于抢新题库的一血

那么,

作天的题

题目描述

1
2
3
4
5
本关任务:计算正整数num的各位上的数字之积。
例如:
输入:2583 经过(2x5x8x3) 输出:240
输入:102 经过(1x0x2) 输出:0
输入:136 经过(1x3x6) 输出:18

输入

1
一个数num

输出

1
运算结果(一个整数)

做题思路1

循环, 每次取一位, 和ans变量相乘.

伪代码:

1
2
3
4
5
6
7
ans = 1
输入num
k = 1
while(num / k != 0):
ans *= (num/k)%10 // num去掉后面的位数后取最后一位
k *= 10
输出ans

这种思路的核心在于, 设置中间变量k. 每次把num除k来去掉尾部多余的位数之后取最后一位累乘.

做题思路2

循环, 每次取num的最后一位, 和ans变量相乘后去掉最后一位

伪代码:

1
2
3
4
5
ans = 1
读入num
while num != 0:
ans *= (num%10) // ans乘以num的最后一位
num /= 10 // 核心: 去掉num的最后一位

这个思路的核心在于, 每次取最后一位num用于计算后去掉最后一位.
相比第一个思路的好处是 省略了一个中间变量.