banjalukaforum.com

Dobrodošli na banjalukaforum.com
Danas je 21 Jul 2025, 16:29

Sva vremena su u UTC [ DST ]




Započni novu temu Odgovori na temu  [ 164 Posta ]  Idi na stranicu Prethodni  1, 2, 3, 4, 5, 6, 7, 8, 9  Sledeća
Autoru Poruka
PostPoslato: 16 Apr 2008, 01:57 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Evo jednog M$ takmicenja: http://www.bubblecup.org

A u toku je i Code Fu : http://codefu.com.mk


Vrh
 Profil  
 
PostPoslato: 21 Apr 2008, 21:34 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Evo proslo je i republicko takmicenje iz programiranje koje je odrzano u Subotu u Dobijskom fakultetu "Slobomir P". Organizacija losa. Ljudi nisu bili ni predvidili kako cemo predavati zadatke :). Sto se tice zadataka, bilo ih je 6. Sam pokazatelj koliko su bili teski jesu 4 prva mjesta sa 100% bodova.

Ovako izgleda skraceni poredak:

1. Nemanja Tatic, Igor Peric, Aleksandar Stancic, Jelena Pejic - 130 bodova
2. Vladan Bjelic - 125 bodova
3. Sasa Ivanovic - 110 bodova
...
zadnji je imao 0 bodova :)

A sad zadatci:

1. Neka glupost iz fizike
Kod:
Putnicki voz je krenuo iz Beograda za Pariz brzinom od a km/h. Jedan cas kasnije krece brzi voz u istom smjeru brzinom b km/h.
Napisati program za izracunavanje vremena za koliko ce se vozovi sresti i na kom kilometru.


Resenje:
Kod:
//FreePascal 2.2.0
program zad1;
{$mode objfpc}
var
  S, V, T, Voz1, Voz2 : real;

begin
  Writeln('Brzina putnickog voza u km/h?');
  Readln(Voz1);
  Writeln('Brzina brzog voza u km/h?');
  Readln(Voz2);
  if (Voz1 = 0) and (Voz2 = 0) then
    begin
      Writeln('VOZOVI NISU NI KRENULI!');
      Writeln('Brzi voz je sustigao putnicki na 0.00-tom kilometru');
      Writeln('Vrijeme sustizanja prvog voza je 0.00h');
      Readln;
      Halt(0);
    end;
  if (Voz1 < 0) or (Voz2 < 0) then
    begin
      Writeln('Brzina ne moze biti negativna!');
      Readln;
      Halt(0);
    end;
  if (Voz1 >= Voz2) then
    begin
      Writeln('Do susretanja nece doci!');
      Readln;
      Halt(0);
    end;
  S := Voz1;
  V := Voz2 - Voz1;
  T := S / V;
  S := T * Voz2;
  Writeln('Brzi voz je sustigao putnicki na ', S:0:2, '-tom kilometru');
  Writeln('Vrijeme sustizanja prvog voza je ', T:0:2,'h');
  Readln;
end.



2. Najlaksi i najveca glupost :)
Kod:
Napisati program za odredjivanje prve i poslednje cifre unetog broja i zbira cifara.

Primjer:
Ulaz: 234567
Izlaz:
Prva cifra je 2
Zadnje cifra je 7
Zbir cifara je 27


Resenje:
Kod:
//FreePascal 2.2.0
program zad2;
{$mode objfpc}
uses
  Sysutils;
var
  Ulaz : string;
  Izlaz : Int64;
  i : Integer;

begin
  while Ulaz = '' do
    begin
      Writeln('Ulaz?');
      Readln(Ulaz);
    end;
  if Ulaz[1] = '-' then
    begin
     Writeln('Unesen je negativan broj. Cifre ce se gledati kao zasebni prirodni brojevi.');
      Ulaz := Copy(Ulaz, 2, Length(Ulaz) - 1);
      Writeln(Ulaz);
    end;
  Writeln('Prva cifra unetog broja je ', Ulaz[1]);
  Writeln('Prva cifra unetog broja je ', Ulaz[Length(Ulaz)]);
  Izlaz := 0;
  for i := 1 to Length(Ulaz) do
    Izlaz := Izlaz + StrToInt(Ulaz[i]);
  Writeln('Zbir cifara unetog broja je ', Izlaz);
  Readln;
end.



3. Sortiranje, ja sam uradio sa bubblesort-om nije mi se dao kucati QuickSort bez potrebe.
Kod:
Napisati program koji ispisuje rang listu takmicara iz republickog takmicenja tako sto se unosi: Sifra takmicara i broj osvojenih bodova.


Resenje:
Kod:
//FreePascal 2.2.0
program zad3;
{$mode objfpc}
type
  TUcesnik = record
    Sifra : string;
    Bodovi : longint;
  end;
var
  N, i, j, Plasman : longint;
  Niz : array[1..10000] of TUcesnik;
  Temp : TUcesnik;

begin
  Writeln('Unesite broj takmicara?');
  Readln(N);
  for i := 1 to N do
    begin
      Writeln('Unesite sifru?');
      Readln(Niz[i].Sifra);
      Writeln('Unesite Bodove?');
      Readln(Niz[i].Bodovi);
    end;
  for i := 1 to N - 1 do
    for j := i downto 1 do
      if Niz[j].Bodovi < Niz[j + 1].Bodovi then
        begin
          Temp.Sifra := Niz[j].Sifra;
          Temp.Bodovi := Niz[j].Bodovi;
          Niz[j].Sifra := Niz[j + 1].Sifra;
          Niz[j].Bodovi := Niz[j + 1].Bodovi;
          Niz[j + 1].Sifra := Temp.Sifra;
          Niz[j + 1].Bodovi := Temp.Bodovi;
        end;
  Plasman := 1;
  if N = 0 then
    begin
      Readln;
      Halt(0);
    end;
  Writeln('********************************************');
  Writeln('Plasman    Sifra    Bodovi');
  Writeln(Plasman, ' ', Niz[1].Sifra, ' ', Niz[1].Bodovi);
  for i := 2 to N do
    begin
      if Niz[i].Bodovi <> Niz[i - 1].Bodovi then Inc(Plasman);
      Writeln(Plasman, ' ', Niz[i].Sifra, ' ', Niz[i].Bodovi);
    end;
  Readln;
end.


4. Zadatak koji nema ulaza.
Kod:
Naci sve trocifrene brojeve ciji je kvadrat sacinjen od dva uzastopna trocifrena broja.

Primjer:
Trazeni broj je: 428
Dva uzastopna prirodna broja  su 183 184
Kvadrat broja 428 je 183184


Resenje:
Kod:
program zad4;
{$mode objfpc}
uses
  SysUtils;
var
  Num, One, Two, i : longint;
begin
  for i := 100 to 999 do
    if Length(IntToStr(i * i)) = 6 then
      begin
        One := (i * i) div 1000;
        Two := (i * i) mod 1000;
        if One + 1 = Two then
          begin
            Writeln;
            Writeln('Trazeni broj: ', i);
            Writeln('Dva uzastopna prirodna broja su: ', One, ' ', Two);
            Writeln('Kvadrat broja ', i, ' je ', i * i);
          end;
      end;
  Readln;
end.


5. Opet nema ulaza. Moram reci drugu koji me je ubedjivao da ne valjaju one tri for petlje, da sam ovaj prvo uradio sa 9 for petlji ali je stvarno bilo sporo :) pa sam morao smanjiti na 6. Inace baciti pogled na resenje, pravi primjer kako NE treba programirati :)
Kod:
Vrece su obiljezene brojevima 1 do 9. Vrece treba grupirati u 5 grupa tako da: prva i peta grupa imaju jednu vrecu, druga i cetvrta dvije vrece i 3 grupa da ima 3 vrece. Potrebno je ispisati sve kombinacije koje zadovaljavaju uslov da kad se pomnozi prvi i drugi (kao i cetvrti i peti) daju broj u trecom grupi.

Primjer:  2   78   156   39   4
Malo objasnjenje 2 * 78 = 39 * 4 = 156


Resenje:
Kod:
//FreePascal 2.2.0
program zad5;
{$mode objfpc}
uses
  SysUtils;
var
  i1, i2, i3, i4, i5, i6, j, k : integer;
  Niz : array[0..9] of integer;
  Yes : boolean;

begin
   for i1 := 1 to 9 do
     for i2 := 1 to 9 do
       for i3 := 1 to 9 do
         for i4 := 1 to 9 do
           for i5 := 1 to 9 do
             for i6 := 1 to 9 do
               begin
                 Yes := true;
                 k := i1 * (i2 * 10 + i3);
                 if k = (i6 * (i4 * 10 + i5)) then
                   begin
                     if Length(IntToStr(k)) <> 3 then continue;
                     FillChar(Niz, SizeOf(Niz), 0);
                     Inc(Niz[i1]);
                     Inc(Niz[i2]);
                     Inc(Niz[i3]);
                     Inc(Niz[i4]);
                     Inc(Niz[i5]);
                     Inc(Niz[i6]);
                     Inc(Niz[StrToint(IntToStr(k)[1])]);
                     Inc(Niz[StrToint(IntToStr(k)[2])]);
                     Inc(Niz[StrToint(IntToStr(k)[3])]);
                     for j := 1 to 9 do
                       if Niz[j] <> 1 then Yes := false;
                     if Yes then Writeln(i1, ' ', i2 * 10 + i3, ' ', k, ' ', i4 * 10 + i5, ' ', i6);
                   end;
               end;
  Readln;
end.


6. I na kraju malo DP-a
Kod:
Naucnik se bavi stvaranjem svih moguci lanaca duzine n sastavljni od atoma plutonija i olova, tako da ni jedan slozeni lanac ne moze da stvori eksploziju. Lanac je bezbjedan ako se ne nalaze atomi plutonija jedan do drugog. Potrebno je ispisati koliko ima bezbjedni lanaca duzine od N atoma:

Primjer:
Ulaz: N: 3
Izlaz: 5


Resenje:
Kod:
program zad6;
{$mode objfpc}
var
  A, B, T : QWord;
  N, i : Longint;

begin
  Writeln('Unesite vrijednost za N:');
  Readln(N);
  A := 1; B := 2;
  for i := 2 to N do
    begin
      T := B;
      B := A + B;
      A := T;
    end;
  if N = 0 then B := 0;
  Writeln('Postoji ', B, ' bezbjedni lanaca duzine ', N);
  Readln;
end.

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 21 Apr 2008, 21:40 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
I zaboravi cestitke Jeleni, Igoru i Aci na pobjedi

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 21 Apr 2008, 23:08 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Jebes ti nasu prosvjetu kad su ovakvi zadaci na republickom takmicenju... Necu da kazem "Koja li je budala zaduzena za ove zadatke" jer cini se da niko nije ni zaduzen.


Vrh
 Profil  
 
PostPoslato: 22 Apr 2008, 06:44 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 23 Dec 2006, 20:47
Postovi: 101
Lokacija: BN
Nemanja666 je napisao:
I zaboravi cestitke Jeleni, Igoru i Aci na pobjedi


Hvala, takođe.

_________________
Pretpostavka: Ljudi ne bi trebalo da rade, vec da se zezaju.
Dokaz: Majmun se citav zivot zezao i od njega je postao covjek!
:)
Nikad ne zavrsim potpis do kr


Vrh
 Profil  
 
PostPoslato: 24 Apr 2008, 20:05 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Drzavno takmicenje ce biti 17. Maja. Meni je maturalna zabava 16. Maja uvece :) sta znaci da necu doci ciste pameti na takmicenje :angry4:

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 24 Apr 2008, 23:08 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Hehe meni je i matura i drzavno bilo 13. maja. Vratio se sa takmicenja i napio se viskija ko budala. Poslije se komirao i srecno se probudio slijedece jutro u krevetu sa formatiranom memorijom :)

Poenta price - nikad vise Ballentines, laktaski.


Vrh
 Profil  
 
PostPoslato: 24 Apr 2008, 23:15 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Kod mene je problem sto sa pijancenja ravno na takmicenje :)

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 04 Maj 2008, 15:21 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Jedan zanimljiv zadatak na koji sam skoro naletio: http://acm.timus.ru/problem.aspx?space=1&num=1586

Tip zadatka koji volim :D

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 04 Maj 2008, 21:46 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Pozdrav iz Budimpeste! RAF je zauzeo 14. mjesto, sto jel' nije nista posebno, al' moze proci 8)

Zadatak je bio cool, bio je skroz client-server orijentisan
1. napraviti 2D map editor
2. napraviti navigator automobila kroz mapu
3. napraviti auto pilota
4. napraviti 2D sistem za nadgledanje prometa u gradu
5. napraviti 3D sistem za pracenje automobila iz perspektive vozaca
6. napraviti trkaca (bilo je takmicenje, turnirsko, bitke su se pratile na ekranu, ovdje smo malo izbaksuzirali)
7. neka igra lopova i policajaca

I sve to za 24h! Nisam spavao vec 30-ak casova :)


Vrh
 Profil  
 
PostPoslato: 04 Maj 2008, 22:26 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Cestitke,

Mozeli malo nasiroko oko zadatka kad se naspavas :D

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 09:46 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 23 Dec 2006, 20:47
Postovi: 101
Lokacija: BN
Nemanja666 je napisao:
Jedan zanimljiv zadatak na koji sam skoro naletio: http://acm.timus.ru/problem.aspx?space=1&num=1586

Tip zadatka koji volim :D


Prvo pozdrav ekipi, posto odaaaavno nisam bio na forumu. A ovaj zadatak... Nemanja, ovo su ti omiljeni??? Jes' ti programer ili matematicar? :wink:

Na prvi pogled, evo sta mi pada na pamet. Nek mi je NP broj trocifrenih prostih brojeva, P jedan od njih, N broj cifara broja (iz teksta zadatka) a T neki od brojeva sa N cifara. U T mora postojati N-3 cifara + jedan od prostih brojeva P.

Taj prost broj P moze da se nalazi na pocetku, na prvoj, drugoj.... poziciji. Kada je P na pocetku broja T, tada iza njega slijedi N-3 cifara. Koliko sam shvatio, brojeva T koji pocinju jednim brojem P ima koliko i varijacija sa ponavljanjem duzine N-3 elemenata nad skupom od 10 elemenata [0,9].
Dakle, brojeva od N cifara koji pocinju svim trocifrenim prostim brojevima ima NP * (N-3)^10.

Pod uslovom na je broj varijacija duzine N nad R elemenata jednak N^R...

Ako se broj nalazi na nekom drugom mjestu osim prvog, moramo voditi racuna da broj ne moze poceti nulom, pa je (ispravite ako grijesim) broj razlicitih T za koje se P nalazi bilo gdje osim na pocetku jednak NP * 9 * (N-4)^10. Zasto? Pa zato sto ako izuzmemo prvu cifru i P, ostaju nam varijacije duzine N-4 nad 10 elemenata a na svaku mozemo dodati svaku od 9 razlicitih cifara na pocetak broja T.

To je ono na brzaka. Potrudicu se da uradim danas zadatak, pa cu javiti moze li ovako.
Ispravite me oko ovih formula, jer smo ja i kombinatorika tri razlicita pojma...

_________________
Pretpostavka: Ljudi ne bi trebalo da rade, vec da se zezaju.
Dokaz: Majmun se citav zivot zezao i od njega je postao covjek!
:)
Nikad ne zavrsim potpis do kr


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 10:35 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Ma zadatak je lagan kad se shvati 20-30min maksimalno je potrebno.

TIP: Eratostenovo sito[1..999] + DP[0..99, 3..10000] :)

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 13:01 
OffLine
Urednik
Urednik

Pridružio se: 26 Jun 2003, 21:50
Postovi: 2669
Nemanja666 je napisao:
Cestitke,

Mozeli malo nasiroko oko zadatka kad se naspavas :D


Ma nema sanse :)
Poslacu ti na mail formulaciju zadatka (40 stranica, prosle godine ili predprosle, kazu, bilo 100!)


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 13:50 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 23 Dec 2006, 20:47
Postovi: 101
Lokacija: BN
Nemanja666 je napisao:
Ma zadatak je lagan kad se shvati 20-30min maksimalno je potrebno.

TIP: Eratostenovo sito[1..999] + DP[0..99, 3..10000] :)


Izgleda ne radi timus.ru, ne mogu da pogledam tekst zadatka ponovo.

Ali malo sam se raspisao pa mi nesto nije jasno... Kao prvo ne vidim postrebu za Eratostenovim sitom. Ne treba ti puno vremena da nadjes trocifrene proste brojeve (zapravo, trebas samo da ih izbrojis). Ima ih 143, ako ne grijesim.

Druga stvar: recimo da krenem DP resenjem. F(K) je broj razlicitih K-cifrenih brojeva koji u svom sastavu imaju jedan od 143 trocifrena prosta broja. Znaci, F(3) = 143.

Na svaki K-cifreni broj koji vec u sebi sadrzi trocifren prost broj mogu dodati 9 cifara na njegov pocetak ili 10 cifara na kraj, sto znaci da za svaki K-cifreni broj mogu napraviti 19 novih (K+1)-cifrenih brojeva koji zadrzavaju prethodno svojstvo. Dodatno, od K-cifrenih brojeva koji nemaju trocifren broj u sebi, mogu dodavanjem (K+1)-ve cifre formirati trocifren prost broj od poslednje dvije K-cifrenog i nove cifre na 143 nacina.

Po meni, veza izmedju F(K) i F(K+1) je data formulom: F(K+1) = F(K)*19+143.

Ako sam u pravu (za sta su veoma male sanse), nema ovde ni dinamickog. Ali opet, ne znam ni primjere iz zadatka (ne mogu da otvorim sajt), tako da nisam siguran da je ovo OK.

Nemanja, ako imas tekst zadatka, mozes li ga ostaviti ovdje ili poslati na PM?

_________________
Pretpostavka: Ljudi ne bi trebalo da rade, vec da se zezaju.
Dokaz: Majmun se citav zivot zezao i od njega je postao covjek!
:)
Nikad ne zavrsim potpis do kr


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 15:16 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Pa taj odnos koji si rekao nije ni blizu ;)
za ulaz 4 resenje je 204 a ne 2860 ;)

Nije dovoljno da ih izbrojis, a da nije potrebno e.s. vjerovatno s u pravu ali vec bi bilo blizu vremenske granice.

Zadatak ide otprilike ovako:

Ulaz: N (3 <= N <= 10000).
Mi trebamo naci koliko ima N-cifreni brojeva koji su "tro-prosti". Ne treba nam ustvari koliko ih ima neko ostatak pri djeljenju sa 1000000009(Count mod 1000000009).
Tro-prost broj je onaj broj u kom svake tri uzastopne cifre su ustvari trocifren prosti broj.

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 15:37 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 23 Dec 2006, 20:47
Postovi: 101
Lokacija: BN
Nemanja666 je napisao:
... onaj broj u kom svake tri uzastopne cifre su ustvari trocifren prosti broj.


U tom čuču grmi zec! Ja sam zadatak shvatio kao:

TheDragon je napisao:
... onaj broj u kom postoje tri uzastopne cifre koje formiraju prosti broj.


Ček, ček, onda ćemo još malo da razmislimo...

_________________
Pretpostavka: Ljudi ne bi trebalo da rade, vec da se zezaju.
Dokaz: Majmun se citav zivot zezao i od njega je postao covjek!
:)
Nikad ne zavrsim potpis do kr


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 15:43 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
znaci ako je broj: ABCDEF onda ABC, BCD i DEF moraju biti prosti da bi ABCDEF bio "tro-prost"

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 17:15 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 23 Dec 2006, 20:47
Postovi: 101
Lokacija: BN
Shvatio sam. Tako mi i treba kada brzo procitam zadatak. Evo koda:

Kod:
#include <iostream>
#include <vector>
using namespace std;

#define MAX 1000
#define CONST 1000000009
vector< vector< long long> > dp;
vector<bool> prime(MAX,1);
long i,SOL(0),n,j,k,tmp;
     
void ES() { // Eratosten's sieve
     long i,j;
     for (i=2;i<MAX/2+1;i++)
         if (prime[i])
            for (j=2*i;j<MAX;j+=i) prime[j] = 0;
     }

int main() {
    cin >> n;
    dp.resize(n);
    for (i=0;i<n;i++) {
        dp[i].resize(100);
        fill(dp[i].begin(),dp[i].end(),0);
        }
       
    // Sito
    ES();
    // Rezultat u vektoru prime[]
   
    // Inicijalizacija
    for (i=100;i<MAX;i++)
        if (prime[i]) dp[2][i%100]++;
   
    for (long k=3;k<n;k++) { // Formiranje broja sa K+1 cifara
        for (i=1;i<10;i+=2) // Pokusaj dodati cifru i na kraj
            for (j=10;j<100;j++) // Provjeri sve dvocifrene zavrsetke
                if (prime[j*10+i]) {
                   tmp = (j % 10) * 10 + i;
                   dp[k][tmp] = ( dp[k][tmp] + dp[k-1][j] ) % CONST;
                   }
        }
   
    SOL = 0;
    for (i=0;i<100;i++) SOL += dp[n-1][i];
    cout << SOL << endl;
    system("pause");
}


Trebalo bi da je OK, samo ne shvatam zasto za (recimo) N=945 imam overflow... Dobijam negativan broj kao rezultat, iako mi je svaki element matrice long long, a modul radim u svakoj iteraciji.

Ideja je da DP[X][Y] predstavlja ukupan broj razlicitih tro-prostih brojeva koji imaju X cifara od kojih su dvije poslednje cifre Y (Y je uvjek dvocifren, zbog toga i granica [00,01,...,98,99]).

Kada pokusam da prosirim broj na X+1 cifru, dodajem sve cifre K iz intervala [0,9] redom, ali pazim da je Y*10+K prost broj, znaci da cifra koju dodajem zajedno sa Y cini prost broj.

Fin zadatak...

Zna li neko zasto imam taj overflow?

_________________
Pretpostavka: Ljudi ne bi trebalo da rade, vec da se zezaju.
Dokaz: Majmun se citav zivot zezao i od njega je postao covjek!
:)
Nikad ne zavrsim potpis do kr


Poslednji put menjao TheDragon dana 11 Maj 2008, 18:22, izmenjena samo jedanput

Vrh
 Profil  
 
PostPoslato: 11 Maj 2008, 17:41 
OffLine
Majstor
Majstor
Korisnikov avatar

Pridružio se: 28 Mar 2006, 11:25
Postovi: 898
Pa zato sto sy brojevi veci od 2^65 - 1 ;)

Trazi se mod 10^9 + 9 zbog toga da nedodje do overflow-a

moje resenje

Kod:
program acm_1586;
var
  Primes : array[1..999] of Boolean;
  DPTable : array[0..99, 3..10000] of QWord;
  N, i, j : Integer;
  Count : QWord;
   
begin
  FillChar(Primes, SizeOf(Primes), 1);
  FillChar(DPTable, SizeOf(DPTable), 0);
  Primes[1] := false; Count := 0; 
  for i := 2 to 999 do
    if Primes[i] then
      for j := 2 to 999 div i do
        Primes[i * j] := false;       
  for i := 100 to 999 do
    if Primes[i] then
      Inc(DPTable[i mod 100, 3]);     
  for i := 4 to 10000 do
    for j := 10 to 99 do
      if DPTable[j, i - 1] > 0 then
        begin
          if Primes[j * 10 + 1] then DPTable[j * 10 mod 100 + 1, i] := (DPTable[j * 10 mod 100 + 1, i] + DPTable[j, i - 1]) mod 1000000009;
          if Primes[j * 10 + 3] then DPTable[j * 10 mod 100 + 3, i] := (DPTable[j * 10 mod 100 + 3, i] + DPTable[j, i - 1]) mod 1000000009;
          if Primes[j * 10 + 7] then DPTable[j * 10 mod 100 + 7, i] := (DPTable[j * 10 mod 100 + 7, i] + DPTable[j, i - 1]) mod 1000000009;
          if Primes[j * 10 + 9] then DPTable[j * 10 mod 100 + 9, i] := (DPTable[j * 10 mod 100 + 9, i] + DPTable[j, i - 1]) mod 1000000009;
        end; 
  Readln(N);     
  for i := 0 to 99 do
    Inc(Count, DPTable[i, N]);
  Writeln(Count mod 1000000009);
end.


Sad cu da pogledam tvoje resenje, ali koliko sam vidio slicno je

_________________
U raju je lijepo, ali u paklu je raja.


Vrh
 Profil  
 
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 164 Posta ]  Idi na stranicu Prethodni  1, 2, 3, 4, 5, 6, 7, 8, 9  Sledeća

Sva vremena su u UTC [ DST ]


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 1 gost


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
Powered by phpBB® Forum Software © phpBB Group
Hosting BitLab
Prevod - www.CyberCom.rs