Răspuns :
#include <iostream>
using namespace std;
int main()
{
int n,i=1,nr_pagini=0;
cin>>n;
while (nr_pagini<n)
{
if (i<=9) nr_pagini = nr_pagini + 1;
if (10<=i && i<=99) nr_pagini = nr_pagini + 2;
if (100<=i && i<=999) nr_pagini = nr_pagini + 3;
if (nr_pagini==1000) nr_pagini = nr_pagini + 4;
i++;
//cout<<nr_pagini<<endl;
}
if (nr_pagini==n) cout<<i-1;
else cout<<"minciuna";
return 0;
}
"Pentru scrierea tuturor numerelor paginilor, s-au folosit n cifre"
Pentru n=21 rezultă că s-au folosit 21 de cifre
pagina 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
nr.pagini 1 2 3 4 5 6 7 8 9 11 13 15 17 19 21
nr_pagini < n, deci 21 < 21 F se iese din while, dar înainte de asta se mai face o data i++, motiv pentru care afișăm la sfârșit i-1 (15);
Pentru n=22 rezultă
pagina 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
nr.pagini 1 2 3 4 5 6 7 8 9 11 13 15 17 19 21 23
23 < 22 F se iese din while, dar 23 != 22, de unde rezultă "minciuna"
Asta este rezolvarea crescătoare (care aduna cat timp nr_pagini<n), dar se mai poate folosi și metoda descrescătoare unde scazi din n 1,2,3 sau 4, adică
n=21 : 20 19 18 17 16 15 14 13 12 10 8 6 4 2 0
nr_pagini : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
if (n==0) cout<<nr_pagini;
else cout<<"minciuna";
Sper că te-am ajutat :)