Rareș și Didi au primit în dar o carte rară de povești, cu N+1
pagini numerotate cu numerele distincte: 0
, 1
, 2
, 3
,…, N
. De ce rară? Din două motive:
- Este necesar un cifru pentru a deschide cartea. Acest cifru este un număr
C
egal cu numărul de cifre folosite pentru numerotarea celorN+1
pagini ale cărții. - În carte există o pagină magică. Dacă este descoperită, atunci toate poveștile din carte vor fi înlocuite instantaneu cu altele necunoscute.
Pentru a descoperi numărul P
al paginii magice se pornește de la numărul N
din care se va alege o cifră (diferită de prima și ultima cifră ale lui N
), astfel încât produsul dintre prefixul lui N
(reprezentând numărul format din cifrele situate la stânga cifrei alese) și sufixul lui N
(reprezentând numărul format din cifrele situate la dreapta cifrei alese) să fie maxim. Numărul paginii magice va fi egal cu acest produs maxim. De exemplu, pentru N=21035
se pot obține produsele: 210*5=1050
, 21*35=735
, 2*35=70
. Astfel numărul paginii magice este 1050
.
Pasionați de povești, Rareș dorește să descopere pagina magică iar Didi și-a propus să descopere cifrul pentru deschiderea cărții.
Cerinţe
Scrieţi un program care citeşte numărul natural nenul N
şi care determină:
a) numărul P
al paginii magice;
b) numărul C
reprezentând cifrul de deschidere a cărții.
Date de intrare
Programul citește de la tastatură numărul N
, reprezentând numărul de pagini ale cărții de povești.
Date de ieșire
Programul va afișa pe ecran numere P C
, n această ordine, cu semnificația din enunț.
Restricții și precizări
100 ≤ N ≤ 1000000000
;N
număr natural- Pentru rezolvarea corectă a cerinţei a) se acordă
20%
din punctaj, iar pentru rezolvarea corectă a ambelor cerinţe se acordă100%
din punctaj.
Exemplu 1
Intrare
113
Ieșire
3 232
Explicație
Numărul paginii magice este 3
.
Paginile cărții sunt numerotate cu numerele: 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
,…, 113
. Cifrul este numărul C=232
deoarece s-au folosit 232
cifre pentru scrierea numerelor paginilor cărții.
Exemplu 2
Intrare
21035
Ieșire
1050 94070
Explicație
Numărul paginii magice este 1050
.
Paginile cărții sunt numerotate cu numerele: 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
,…, 21035
. Cifrul este numărul C=94070
deoarece s-au folosit 94070
cifre pentru scrierea numerelor paginilor cărții.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Povesti:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long n , pp = 9 , i , n2 , t = 0 , c = 0;
cin >> n;
//cerinta a
long long prodmax=0, p;
int p10 = 100 , prefix , sufix;
do
{
prefix = n / p10;
sufix = n % (p10 / 10);
p = prefix * sufix;
prodmax = max(p , prodmax);
p10 = p10 * 10;
}
while( prefix > 9);
cout << prodmax << " ";
//cerinta b
n2 = n;
while (n2 != 0)
{
c = c + 1;
n2 = n2 / 10;
}
for (i = 1; i < c; i++)
{
t = t + i * pp; pp = pp * 10;
}
pp = pp / 9;
t = t + (n - pp + 1) * c;
cout << t+1 << endl;
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #958 Povesti
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #958 Povesti de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!