부분 문자열 곱하기 필요하지 않지만, 최종 횟수와

두 개의 정수를 입력으로받는 프로그램을 작성하십시오. 첫 번째는 임의의 정수일 수 있으며 두 번째는 첫 번째 숫자의 자릿수보다 작거나 같습니다. 이 숫자 a들을 b각각 이라고하자 .

프로그램은 다음을 수행합니다

  • 1끝에 s 의 최소 ​​수를 연결하여 a자릿수를 a으로 나눌 수 b있습니다.
  • 분할 a마다 함께 b자리.
  • 각 섹션의 숫자를 곱하십시오.
  • 제품을 함께 연결하십시오 (숫자 중 하나가 0이면 연결 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


프로그램은 if 오류를 반환해야합니다 (또는 아무것도 인쇄하지 않아야 함) b>len(a). 또한 b1과 같거나 프로그램이 무한 루프를 발생시킵니다.


이것은 코드 골프이므로 표준 규칙이 적용됩니다. 바이트 단위의 최단 코드가 이깁니다.



답변

CJam, 42 바이트

q~:N;Ab{_N(>}{_N/)N1e]a+::*s:~}w])S@,_])g*

여기에서 테스트하십시오.


답변

펄 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
}

답변

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