← Back to topics
Topic

cifre

m
matteo123
radi mi 2/5 a neznam di mi je greška...molim pomoć...evo koda:

#include <iostream>
#include <sstream>
using namespace std;
int main () {
int broj,n,g,k,zdi;
scanf ("%d",&n);
g=10;
k=1;
broj=0;
for (int i=1;i<=n;i+=k) {
zdi=i;
if ((broj%g)==0) {
g*=10;
k++;
}
broj++;
}
string message;
std: stringstream my_stringstream;
my_stringstream << broj;
message = my_stringstream.str();
cout << message[n-zdi-1] << endl;
system ("pause");
}

h
halil
Video sam tvoj paskalski post (ne radim C) i mislim da probaš sa drugom idejom. For i:= 1 to n ...? Verovatno bi dobijao TLE.
Ima 9 jednocifrenih brojeva, dakle 9*1=9 cifara.
Ima 90 dvocifrenih brojeva, dakle 90*2=180 cifara.
Ima 900 trocifrenih brojeva, dakle 900*3=2700 cifara.
.....
m
matteo123
ma lakše mi je u c++u zato sam i posto taj kod.a ja mislim da onaj kod radi na takvoj nekakvoj ideji.
h
halil
Probaj ovo. Mislim da je u 'zdi' ono što to odgovara, tj. broj u kome se nalazi n-ta cifra.

g=10;
k=1;
broj=1;
for (int i=0;i<=n;i+=k) {
zdi=broj;
if ((broj%g)==0) {
g*=10;
k++;
}
broj++;
}
P.S.
Kod prethodnog odgovora nisam odmah primetio da je ' for (i=1; i<n; i+=k)...'. I dalje mislim da 'for' puno puta odradi.

m
matteo123
ma pokušao sam ja i to šta si napisao ali svejedno dobijem 2/5