Programozó versenyek

DEIK Regionális Programozó Csapatverseny, középiskolai kategória, 2015. november 29.

2015. november 29. 10:40 – 2015. november 29. 15:40

Faktorok és faktoriálisok

Egy N szám faktoriálisát az 1-től N-ig terjedő egész számok szorzataként definiáljuk (jelölése: N!). Gyakran azonban rekurzívan definiáljuk a következőképpen:

1! = 1
N! = N ⋅ (N – 1)!

A faktoriálisok nagyon gyorsan nőnek: 5! = 120, 10! = 3 628 800. Az ilyen nagy számok felírásának az egyik módja, hogy megadjuk, hogy az egyes prímek hányszor vannak meg bennük. A 825 például felírható a (0 1 2 0 1) számsorozattal, ami azt jelenti, hogy a 2 nincs meg benne, a 3 egyszer, az 5 kétszer van meg benne, a 7 nincs meg benne, a 11 pedig egyszer van meg benne.

Írj egy programot, amely beolvas egy N számot (2 ≤ N ≤ 100), majd kiírja a faktoriálisát a benne meglévő prímek előfordulásainak a számaival.

A bemenet specifikációja

A bemenetet sorok sorozata alkotja; minden sor egy N egész számot tartalmaz. A bemenetet egy olyan sor zárja, amelyben egyetlen 0 szerepel.

A kimenet specifikációja

A kimenet sorokból álló blokkok sorozata, a bemenet minden sorához egy-egy blokk tartozik. Minden blokk az N számmal kezdődik egy 3 szélességű mezőn jobbra igazítva, ezt egy „!”, egy szóköz és egy „=” követi. Ezután az N!-ban meglévő prímek előfordulásainak a számai következnek.

Ezeket az értékeket is 3 szélességű mezőkön jobbra igazítva kell kiírni, és minden sorban 15 számot kell szerepeltetni (kivéve a blokkok utolsó sorát, amely rövidebb is lehet). Az első sort követő minden sort behúzással kell kezdeni. Kövesd pontosan a lent látható példa kimenet formátumát!

Példa bemenet

  1. 5
  2. 53
  3. 0
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1.   5! =  3  1  1
  2.  53! = 49 23 12  8  4  4  3  2  2  1  1  1  1  1  1
  3.         1
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.