LearnToCP
Prijavi se
Navigacija
PočetnaRoad-mapaProblemiO Nama
Teorija
Takmičarsko Znanje
Izbor Radnog Okruženja (IDE)Interaktivni ZadaciOutput-only Zadaci
Osnove
Tvoj Prvi ProgramTipovi podataka, Unos i IzlazC++ sintaksaModuloFunkcijeVektoriMatriceVremenska Složenost Algoritma
Sortiranje
SortiranjeSortiranje PrebrojavanjemRadix Sort
Tehnike Optimizacije
Dva PokazivačaZbir brojeva od 1 do nZbir PrefiksaBinarna PretragaPohlepni AlgoritmiFunkcije Binarne PretrageBinarna Pretraga po RešenjuPodeli, pa Vladaj
Binarni Brojevi
Binarni BrojeviBrojevi u koduOperacije nad BitovimaBitmaske
Matematika
Binarno StepenovanjeProsti BrojeviRastavljanje na proste činioceNZD i NZSEratostenovo SitoModifikovano Sito
Strukture Podataka
Niske (Stringovi)StekRedMapeSkupovi (Set)Red sa PrioritetomKorišćenje Proizvoljnih KriterijumaSegmentna StablaFenvikova StablaSparse TabeleDisjunktni Skupovi
Kombinatorika
Pravilo SabiranjaPravilo MnoženjaKombinatorni ObjektiPrincip Uključenja Isključenja
Geometrija
Osnove GeometrijeVektoriVektorski i Skalarni ProizvodLinijePoligoniUgloviTačka u PoligonuRastojanja i Tačke PresekaKonveksni OmotačKrugovi
Rekurzija
PokazivačiRekurzijaGenerisanje Kombinatornih Objekata
Dinamičko Programiranje
O DP-uDP problemiDP nad StablimaDP nad BitmaskamaDP nad brojevima
Teorija Grafova
GrafoviDFS i BFSNajkraći PuteviStablaTopološko SortiranjeDajkstrin AlgoritamMinimalna Razapinjuća StablaAlgoritmi Najkraćih Puteva
Napredna Teorija Grafova
Dvostruka PovezanostJako Povezane KomponenteBipartitni GrafMaksimalni Protok u GrafuFord-Fulkersonov AlgoritamDualnost Protoka i Minimalnog PresekaTeško-Laka DekompozicijaCentroidna Dekompozicija
Napredne Strukture Podataka
2D i 3D Segmentna StablaLenjo PropagiranjeImplicitna Segmentna StablaPerzistentna Segmentna StablaNajbliži Zajednički PredakTrieBalansirana Binarna Stabla PretrageMoov Algoritam

Deljivi rasporedi cifara

HardProblem #73
VremeMemorijaUlazIzlaz
4 s256 MBstdinstdout

Dva rasporeda cifara koja daju isti broj računaju se kao jedan.

Uzmi broj n i ispremeštaj mu cifre kako god hoćeš. Neki od brojeva koje tako možeš da sastaviš deljivi su sa m - prebroj ih.

Da bi se brojao, broj x mora da bude sastavljen tačno od cifara broja n, svaku onoliko puta koliko se javlja u n, ne sme da počinje nulom i mora da bude deljiv sa m. Isti broj se pritom broji samo jednom: od cifara broja n=223 mogu se sastaviti 223, 232 i 322 i ništa više, bez obzira na to kojim redom uzimamo njegove dve dvojke.

Ulaz

U prvoj liniji ulaza je jedan ceo broj t - broj test primera.
U svakoj od sledećih t linija su dva cela broja n i m.

Izlaz

Za svaki test primer ispiši u posebnoj liniji koliko različitih brojeva deljivih sa m, i to bez vodeće nule, može da se sastavi od cifara broja n.

Primer

Input
3
104 2
223 4
7067678 8
Output
3
1
47

Od cifara broja 104 mogu se sastaviti 104, 140, 401 i 410 - ostali rasporedi počinju nulom - a parni su svi osim 401. Od cifara broja 223 jedino je 232 deljivo sa 4. U trećem test primeru takvih brojeva ima 47.

Ograničenja

1≤t≤5
1≤n<1018
1≤m≤100


Zadatak je nastao po uzoru na Roman and Numbers, zadatak 401D sa Codeforces Round 235, autora Mike Mirzayanov i tima Codeforces. Postavka je naša.

Pošalji svoje rešenje

Prijavi se da pošalješ rešenje i pratiš svoj napredak.

Prijavi se