Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 3.896 pregleda

Najnovija ↓

ukupan broj cifara u tom nizu problem:(:(:( 18.10.2008. u 20:56 · pre 219 meseci #1
Kada dekadne zapise prirodnih brojeva počevši od broja 1 do nekog zadanog broja N redom napišemo jedan za drugim dobijamo niz cifara kojeg nazivamo brojniz tj.

12345678910111213141516171819202122 ... itd.

Napišite program koji će izračunati ukupan broj cifara u tom nizu.

na ulazu ide broj od 1 do 100 000 000
pretpostavljam da treba da se definise kao longint

e sad..poceo sam zadatak sa petljom for i:=1 to n do
begin
i zapucao..ne znam kako bih krenuo dalje....
mislite li da mozda pomocu while moze lakse i brze?neko ideju pls




ulaz 5 15 120
izlaz 5 21 252
Re: ukupan broj cifara u tom nizu problem:(:(:( 18.10.2008. u 22:40 · pre 219 meseci #2
Evo primer za broj 120, broj cifara jednak je
1*9+2*90+3*21.
Mogao bi to jednostavno sa if
recimo,

Code:
if broj <10
  then brojcifara:=broj
  else if broj<100
          then brojcifara:=9+(broj-9)*2 
          else if broj<1000
                  then brojcifara:=9+180+(broj-99)*3   
                  else if broj<10000
                          then brojcifara:=9+180+2700+(broj-999)*4
                          itd.


Evo ako je broj manji od 10000 a veci od 999, znaci broj je cetvorocifren. Njegov brojniz ima zbir cifara svih jednocifrenih, dvocifrenih, trocifrenih i nekih cetvorocifrenih brojeva. Zbir cifara jednocifrenih brojeva je 9, dvocifrenih 180 (90*2), trocifrenih 2700 (900*3), a ostatak je zbir cetvorocifrenih brojeva do datog broja * 4 (jer svaki ima 4 cifre)
Re: ukupan broj cifara u tom nizu problem:(:(:( 18.10.2008. u 22:46 · pre 219 meseci #3
Svakako to sam i ja prokljuvio odma i napravio tabelicu..nego mene muci sto je na ulazu broj do 100 000 000...znaci treba da ide kilometarski program da bi ispisao mogucnosti sve do devetocifrenih brojeva???
Re: ukupan broj cifara u tom nizu problem:(:(:( 19.10.2008. u 12:55 · pre 219 meseci
izmenjeno 2 puta, poslednji put Tomcat131 19.10.2008. u 13:38
  1. Tomcat13119.10.2008. u 13:38zapis iz teksta poruke
  2. Tomcat13119.10.2008. u 13:08zapis iz teksta poruke
#5
done:)
Re: ukupan broj cifara u tom nizu problem:(:(:( 20.10.2008. u 00:48 · pre 219 meseci
izmenjeno 1 put, poslednji put badam 20.10.2008. u 03:17
  1. badam20.10.2008. u 03:17zapis iz teksta poruke
#6
Code:

brojcifara:=0;
for i:=1 to n do
  brojcifara:=brojcifara+length(IntToStr(i))


huh, nadam se da nisam 'proplivo' i da ovo nije samo iluzija rešenja koja mi se javila nakon mnoooogo pasulja i piva.
Re: ukupan broj cifara u tom nizu problem:(:(:( 26.10.2008. u 00:04 · pre 219 meseci #8
Nije lose samo sto stalno moras da prepravljas algoritam.
Evo jedno malo opstije resenje koje moze da se primeni za bilo koji ulazni podatak.


Function BrCifara(ABroj:String):Int64;
var
I:Integer;//
LenStr:Integer;//Duzina stringa
Broj:Integer; // Broj kao integer;
Step:Integer; // Stepen broja 10 n.p.r. 1 , 10 , 100 ,....
Begin
Result:=0; // Iniciramo rezultat na nulu
LenStr:=Length(ABroj); // Uzimamo duzunu stringa
Broj:=StrToInt(ABroj); // Prava vrednost broja
Step:=1;
for I := 1 to LenStr-1 do Step:=Step*10;
Broj:=Broj-Step;// Koliki je broj cifara veci od Step
Result:=(Broj+1)*LenStr;
Step:=Step div 10;
for I :=LenStr-1 downto 1 do begin
Result:=Result+9*Step*I;
Step:=Step div 10;
end;
End;
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme