Cerința
Se construiește un număr natural N
ale cărui prime 51
cifre sunt:
N = 112233445566778899100111122133144155166177188199200......
Deduceți regula prin care se construiește numărul N
și stabiliți care este cea de a K
-a cifră din scrierea acestui număr.
Scrieţi un program care citeşte numărul K
şi care determină cea de a K
-a cifră din scrierea lui N
.
Date de intrare
Programul citește din fișierul kcifra.in
, de pe prima linie, numărul natural nenul K
.
Date de ieșire
Programul scrie în fişierul kcifra.out
, pe prima linie, un număr natural (o cifră) reprezentând cea de a K
-a cifră din scrierea numărului N
construit.
Restricții și precizări
1 ≤ K ≤ 588888
K
număr natural
Exemplul 1:
Intrare
10
Ieșire
5
Explicație
Primele 10
cifre ale lui N
sunt: 1 1 2 2 3 3 4 4 5 5
.
Exemplul 2:
Intrare
51
Ieșire
0
Explicație
Primele 51
cifre ale lui N
sunt: 112233445566778899100111122133144155166177188199200
.
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 kcifra:
#include <fstream>
using namespace std;
fstream f("kcifra.in");
ofstream g("kcifra.out");
int main()
{
int k;
f>>k;
int c,nrcif=0,nr;
if(k<=18)c=(k+1)/2; //x_
else
if(k<=288)
{ ///xy_
nr=9; nrcif=18;
while(nrcif+3<=k)
{
nrcif+=3;nr++;
}
if (nrcif==k)
c=nr%10;
else
{
nr++;
if(nrcif+1==k)
c=nr/10;
else
c=nr%10;
}
}
else
if(k<=3888)
{ ///xyz_
nr=99; nrcif=288;
while(nrcif+4<=k)
{
nrcif+=4; nr++;
}
if (nrcif==k)
c=nr%10;
else
{
if(nrcif+1==k)
c=nr/100;
else
c=nr/10%10;
}
}
else
if(k<=48888)
{ ///xyzt_
nr=999; nrcif=3888;
while(nrcif+5<=k)
{nrcif+=5;nr++;}
if (nrcif==k)
c=nr%10;
else
{
if(nrcif+1==k)c=nr/1000;
else
if(nrcif+2==k)c=nr/100%10;
else
if(nrcif+3==k)c=nr/10%10;
else
c=nr/10%10;
}
}
else
{ ///xyztu_
nr=9999; nrcif=48888;
while(nrcif+6<=k)
{ nrcif+=6;nr++;}
if (nrcif==k)c=nr%10;
else
{
if(nrcif+1==k)c=nr/10000;
else
if(nrcif+2==k)c=nr/1000%10;
else
if(nrcif+3==k)c=nr/100%10;
else
if(nrcif+4==k)c=nr/10%10;
else
c=nr/10%10;
}
}
g<<c<<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 #1347 kcifra
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1347 kcifra 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!