将一个数字中的数字相互相乘

将一个数字中的数字相互相乘

我有一个数字列表,我想将每个数字中的数字彼此相乘;例如,对于数字 1234,它是 1 X 2 X 3 X 4 = 24

例如以下输入

7675342567
098765342567
1234567890
0987654
234567
8765678
98
0999
09876543
345678
876543
87654

需要以下结果:

7408800
0
0
0
5040
564480
72
0
0
20160
20160
6720

我应该如何进行?

答案1

你可以这样做:

<file sed 's/./&*/g;s/*$//' | bc

7408800
0
0
0
5040
564480
72
0
0
20160
20160
6720

使用 GNU sed,可以简化为:

<file sed 's/./*&/2g' | bc

答案2

严格在 bash 内,假设你不这样做溢出超过 9 千万亿并发生变化 (9,223,372,036,854,775,807),

while IFS= read -r 
do 
  res=1
  for((i=0;i<${#REPLY};i++))
  do 
    res=$((res * ${REPLY:i:1}))
  done
  echo "$res"
done < input > output

相关内容