multisum

Time limit: 0.4s Memory limit: 16MB Input: multisum.in Output: multisum.out

Orice număr natural mai mare decât 22 poate fi scris ca sumă de numere naturale nenule aflate în ordine strict crescătoare, astfel încât orice termen al sumei, cu excepția primului termen, este un multiplu a termenului precedent din sumă. De exemplu, 27=3+6+1827=3+6+18, unde 66 este multiplul lui 33, iar 1818 este multiplul lui 66. Cum se dorește o descompunere formată dintr-un număr cât mai mare de termeni, vom obține și descompuneri cu 44 termeni: 27=1+2+8+1627=1+2+8+16 sau 27=1+2+4+2027=1+2+4+20 sau 27=1+2+6+1827=1+2+6+18. Dintre cele trei descompuneri cu 44 termeni, descompunerea 27=1+2+4+2027=1+2+4+20 este minimă din punct de vedere lexicografic (11 și 22 sunt la fel în cele 33 descompuneri, dar 4<64<6 și 4<84<8). Numărul 3030 poate fi descompus 30=2+4+8+1630=2+4+8+16. El are o descompunere tot de lungime 44, dar este mai mare din punct de vedere lexicografic decât oricare dintre descompunerile cu 44 termeni ale lui 2727 (2>12 > 1).

Cerință

Pentru mai multe seturi de date formate din câte două numere naturale AA și BB, ABA \leq B, se cere să se determine, pentru fiecare set, una dintre următoarele cerințe:
1)1) numărul maxim de termeni în care pot fi descompuse numerele din intervalul [A,B][A,B] după regula descrisă în enunț;
2)2) numărul de numere din intervalul [A,B][A,B] care pot fi descompuse cu un număr maxim de termeni;
3)3) numărul din intervalul [A,B][A,B] care admite o descompunere cu un număr maxim de termeni, minimă din punct de vedere lexicografic.

Date de intrare

Din fișierul multisum.in se citesc, de pe prima linie, două numere NN și CC, despărțite printr-un spațiu, reprezentând numărul de seturi de date și tipul cerinței: C=1C=1 pentru cerința 11, C=2C=2 pentru cerința 22 și C=3C=3 pentru cerința 33. De pe următoarele NN linii ale fișierului se citește câte o pereche de numere AA și BB, separate printr-un spațiu.

Date de ieșire

În fișierul multisum.out se va scrie câte o linie pentru fiecare pereche A,BA,B din fișierul de intrare, linie care va conține numărul cerut, conform cerinței: dacă C=1C=1, numărul va reprezenta numărul maxim de termeni dintr-o descompunere, dacă C=2C=2, numărul va reprezenta numărul de valori din intervalul respectiv care pot fi descompuse cu un număr maxim de termeni, iar dacă C=3C=3, numărul va reprezenta acea valoare din intervalul respectiv care admite o descompunere cu un număr maxim de termeni, minimă din punct de vedere lexicografic.

Restricții și precizări

  • 0<N1 0000 < N \leq 1 \ 000;
  • 2<AB100 0002 < A \leq B \leq 100 \ 000;
  • Suma lungimilor intervalelor din toate seturile unui test nu va depăși 100 000100 \ 000;
  • Pentru rezolvarea corectă a cerinței 11, se acordă 20%20\% din punctaj, pentru cerința 22 se acordă 40%40\% din punctaj, iar pentru cerința 33 se acordă 40%40\% din punctaj;
  • Pentru teste în valoare de 3030 de puncte, N50,B1 000N \leq 50, B \leq 1 \ 000 și suma lungimilor intervalelor din teste nu va depăși 10 00010 \ 000.

Exemplul 1

multisum.in

1 1
50 60

multisum.out

5

Explicație

Există un singur set de date. Se rezolvă cerința 11.

Descompunerile maximale ale numerelor din interval au unele 44 termeni, altele 55 termeni. Deci cel mai mare număr de termeni este 55 (și acesta se obține pentru numerele 5555, 5757, 5858 și 5959).

Exemplul 2

multisum.in

1 2
50 60

multisum.out

4

Explicație

Există un singur set de date. Se rezolvă cerința 22.

Numerele care se pot descompune într-un număr maxim de termeni sunt 5555, 5757, 5858 și 5959. Deci sunt 44 numere care admit o descompunere maximală.

Exemplul 3

multisum.in

1 3
50 60

multisum.out

55

Explicație

Există un singur set de date. Se rezolvă cerința 33.

Cele 44 numere care admit descompuneri maximale sunt:

  • 55=1+2+4+16+3255=1+2+4+16+32;
  • 55=1+2+4+12+3655=1+2+4+12+36;
  • 55=1+2+4+8+4055=1+2+4+8+40;
  • 57=1+2+6+12+3657=1+2+6+12+36;
  • 58=1+3+6+12+3658=1+3+6+12+36;
  • 59=1+2+8+16+3259=1+2+8+16+32.

Cea mai mică sumă din punct de vedere lexicografic este 1+2+4+8+401+2+4+8+40 și ea corespunde numărului 5555.

Exemplul 4

multisum.in

3 3
50 50
10 13
16 17

multisum.out

50
11
17

Explicație

Sunt 33 seturi de date. Se rezolvă cerința 33.

  • Intervalul [50,50][50, 50] conține doar numărul 5050 care admite o singură descompunere maximală (cu 44 termeni) și aceasta este minimă din punct de vedere lexicografic.
  • Dintre numerele din intervalul [10,13][10,13], numerele 1010, 1111 și 1313 admit o descompunere cu un număr maxim de termeni (33 termeni), dar o descompunere maximală a lui 1111 (1+2+81+2+8) este minimă din punct de vedere lexicografic.
  • În intervalul [16,17][16,17] numerele admit câte două descompuneri maximale:
    • 16=1+3+1216=1+3+12;
    • 16=1+5+1016=1+5+10;
    • 17=1+2+1417=1+2+14;
    • 17=1+4+1217=1+4+12.
      Descompunerea minimă din punct de vedere lexicografic este 1+2+141+2+14 și corespunde valorii 1717.

Log in or sign up to be able to send submissions!