# Untitled

unknown

plain_text

7 months ago

2.4 kB

10

Indexable

Never

^{}

Card game designer Mr. JongMin came up with a new game, rules are as follows: The cards are numbered from number 0 to 9: -> At the start of the game you get 5 cards, where first card would always be nonzero -> Without changing order of cards, cards are divided into two parts. -> Now multiply these two numbers which are obtained by these two parts -> You would get cards corresponding to this new number -> When the cards that you have cannot be divided into two groups, the game is over. For example initially we got the cards 1, 2, 3, 4 and 5; these were divided by us into 1, 2, and 3, 4, 5. So the cards that we will get in the next round are 12 x 345 = 4140. This process is then continued in the following manner: 4140 -> 41 x 40 = 1640 -> 16 x 40= 640 -> 6 x 40 = 240-> 2 x 40 = 80 -> 8 x 0 = 0 So the cards were divided 6 times in this case. The goal is to maximize the number of divisions we can perform in order to win the game. Input First line is a number T, indicating the number of test cases that follow. Each test case consists of a number N which indicates the initial set of cards given to us. Output Print the maximum number of divisions that can be performed with the provided set of cards on each line. I/O Example (input) 2 12345 6789 (output) 10 11 Constraints 1<=T<=50 1<=Number of digits in N<=5 50 12345 6789 98765 11111 22222 33333 44444 55555 10000 20000 30000 99999 90000 2 3 1 786 456 2392 10203 20405 10001 20004 67089 30555 12340 12300 300 800 999 7 10101 11100 13579 24680 97531 86420 36912 48120 88888 80808 80008 777 65432 33777 99888 12321 23570 9 89012 10 11 21 5 12 16 19 16 1 1 1 28 1 0 0 0 8 5 10 4 3 2 2 20 14 9 4 1 1 8 0 3 3 12 13 26 12 19 12 20 14 4 9 22 20 26 10 8 0 18 #include<iostream> using namespace std; int n; int ans = 0; void divisons(int n, int cnt) { if (cnt > ans) { ans = cnt; } if (n == 0) { return; } for (int i = 10;i <= n;i *= 10) { divisons((n / i) * (n % i), cnt + 1); } } int main() { int test_case; int T; cin >> T; for (test_case = 1;test_case <= T;test_case++) { cin >> n; divisons(n, 0); cout << ans << endl; ans = 0; } return 0; }

Leave a Comment