子串相乘


11

编写一个以两个整数为输入的程序;第一个可以是任何整数,第二个可以小于或等于第一个数字中的位数。分别使这些数字为ab

该程序将执行以下操作

  • 将最小数量的1s 连接到s的末尾,a因此in的位数可以a被整除b
  • a沿每个b数字拆分。
  • 将每个部分中的数字相乘。
  • 将产品串联在一起(如果数字之一为零,则串联0)。
  • 重复此过程,直到形成一个严格少于b数字的数字。将此打印为输出,并重复执行该过程的编号。单位不是必需的,但是最终数量和迭代数量之间需要某种形式的分隔。

在以下测试案例中,出于理解目的而显示了各个步骤。您的程序没有必要显示步骤。

测试用例1

1883915502469, 3

脚步

1883915502469          //Iteration 1
188391550246911
188 391 550 246 911
64 27 0 48 9
64270489               //Iteration 2
642704891
642 704 891
48 0 72
48072                  //Iteration 3
480721
480 721
0 14
014                    //Iteration 4
0

样本输出0, 4

测试用例2

792624998126442, 4

脚步

792624998126442        //Iteration 1
7926249981264421
7926 2499 8126 4421
756 648 96 32
7566489632             //Iteration 2
756648963211
7566 4896 3211
1260 1728 6
126017286              //Iteration 3
126017286111
1260 1728 6111
0 112 6
01126                  //Iteration 4
01126111
0112 6111
0 6
06

样本输出06, 4


如果,程序必须返回一个错误(或什么都不打印)b>len(a)。同样,b不能等于1,否则程序将导致无限循环。


这是代码高尔夫球,因此适用标准规则。以字节为单位的最短代码获胜。


它需要完整的程序还是足够的功能?
Ypnypn

@Ypnypn一个完整的程序。
Arcturus

那么前导零会计入a和的长度吗?
mbomb007

@ mbomb007是的,但仅在初始编号中。在产品的级联中,零链将缩短为单个零。
Arcturus

@ypnypn,您应该在问题中明确地说出来。标记Wiki上的“标准规则”说“以下默认值……答案可能是完整的程序或功能(或等效功能)”。
约书亚·泰勒

Answers:



1

Perl 6,116位元组

my ($a,$b)=@*ARGS;for 0..* {if $b>$a.chars {$_&&say "$a,$_";last};$a=map({[*] @_},($a~1 x$b-1).comb.rotor($b)).join}
my ($a,$b)=@*ARGS;
for 0..* {
  if $b>$a.chars {$_&&say "$a,$_";last}; # you need a 「;」 if you remove the newline
  $a=map(
    {[*] @_},
    ($a~1 x$b-1).comb.rotor($b)
  ).join
}

1

Pyth,32个字节

IglzQf<l=zjk*MsMMc+z*\1%_lzQQQ)z

示范

接受两行输入,a然后输入b。给出两行输出,运算后跟结果。

垫: +z*\1%_lzQ

劈: c ... Q

转换为整数列表: sMM

拿产品: *M

转换回str: jk

分配回去: =z

检查是否终止: <l ... Q

打印迭代: f ... )

打印结果: z

初步检查是否全部打印: IglzQ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.