Pagini: 1 [2] 3   În jos
  Imprimă  
Ajutor Subiect: 519 Modulo  (Citit de 25343 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #25 : Februarie 26, 2008, 20:12:45 »

Fii mai coerent in posturi ca nu esti ceausescu la balcon sa ne iei cu alooo. Eventual citeste documentatia, uita-te in evaluator ca sa vezi ce erori ai, compileaza cu altceva, nu cu Borland, si apoi posteaza sa vedem daca e vreo diferenta.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #26 : Februarie 26, 2008, 22:21:29 »

Si eventual asculta si sfaturile care ti se dau.
Memorat
andrici_cezar
De-al casei
***

Karma: -47
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #27 : Martie 16, 2008, 18:52:12 »

am neovie de ajutor am citit tot ce sa scris pe acest topic si n u imi iese ... de ce??? nu stiu sa ma ajute si pe mn cineva cca nu mai suport sa iau 0 puncte Read This! Brick wall Fighting
Memorat
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #28 : Martie 16, 2008, 19:37:47 »

Cateva observatii:

* tu aici citesti doar a
Cod:
f>>a,b,c;  
Eventual pune
Cod:
f>>a>>b>>c;  

* in cadrul acestui for tu nu faci nimic pentru ca ai pus ; intre for si instructiune, deci la tine mereu m = a;
Cod:
 for (i=1;i<=b;i++);  
     m=m*a; 

* Complexitatea ta este O(b) care o sa iasa din timp in momentul in care intructiunea din acel for nu va mai fi vida. Incearca sa te uiti peste Problema asta pentru a obtine o complexitate O(log B).
Memorat
andrici_cezar
De-al casei
***

Karma: -47
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #29 : Martie 19, 2008, 16:11:03 »

mersi amreusit sa iau 100  Winner 1st place
Memorat
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #30 : Aprilie 09, 2008, 21:16:17 »

Eu am facut acelasi algoritm ca la ridicare la putere in timp logaritmic si dupaia am afisat sol%q si iau incorect pe toate Sad
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #31 : Aprilie 09, 2008, 21:20:33 »

numarul A^B s-ar putea sa fie putin cam mare, nu crezi ca iti depaseste tipul de date care il folosesti, oricare ar fi acela.
Memorat
jupanu92
Client obisnuit
**

Karma: -86
Deconectat Deconectat

Mesaje: 76



Vezi Profilul
« Răspunde #32 : Aprilie 09, 2008, 21:45:29 »

Gata , am rezolvat problema asta era mersi !
Memorat
Magnus
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #33 : Mai 07, 2009, 17:23:06 »

Cod:
#include <stdio.h>

long fct(long a,long A,long b,long c)
{
 if (b<3) return a*a%c;
 else if (b<4) return a*a*a%c;
 else
 {
  a=fct(a,A,b/2,c);
  a=a*a%c;
  if (b%2==1) a=a*A%c;
  return a;
 }
}

int main()
{
 long a,b,c,A;
 freopen("modulo.in","r",stdin);
 freopen("modulo.out","w",stdout);
 scanf("%ld%ld%ld",&a,&b,&c);
 a=a%c;
 A=a;
 if (b>1) a=fct(a,A,b,c);
 printf("%d",a);
 return 0;
}
stie cineva de ce iau doar 40 pct?
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #34 : Mai 07, 2009, 18:24:44 »

Din cate imi aduc aminte, rezultatul trebuia tinut pe long long.
Memorat
Magnus
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #35 : Mai 07, 2009, 20:11:41 »

ms mult
a mers Winner 1st place
Memorat
Alexa_ioana_14
Strain
*

Karma: 6
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« Răspunde #36 : Mai 14, 2009, 13:28:31 »

LA fiecare reapelare de functie am facut modulul...si totusi pe ultimele 2 teste iau WA...
if (p==0) return 1;
if (p%2) return (n%m)*putere((n%m)*(n%m),p/2)%m;
return putere((n%m)*(n%m),p/2)%m;
unde n=a, p=b, m=c
unde gresesc?
Memorat
pcinfo
Strain


Karma: 3
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #37 : Mai 14, 2009, 13:54:58 »

încearca ca în loc de

ab = (a*a)b/2  pentru b par

să foloseşti

ab = ab/2 * ab/2

evident pe ab/2 îl calculezi o singură dată şi îl memorezi... cel puţin la mine a mers Smile
Memorat
Alexa_ioana_14
Strain
*

Karma: 6
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« Răspunde #38 : Mai 15, 2009, 10:54:00 »

ok, mersi mult! Smile
Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #39 : Iulie 23, 2009, 22:06:10 »

Am creat o functie.

Cod:
long long int put(long int a,long int b,long int c)
    {
    int rez,aux;
    if (b%2!=0) aux=pow(a,b-1)*a;
       else aux=pow(a,b/2)*pow(a,b/2);
    rez=aux%c;
    return rez;
    }

Iau 0 puncte pe rezolvarea mea. Ce as putea optimiza, am citit topicul si am aplicat ceea ce am gasit. What's the problem?  Eh?
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #40 : Iulie 23, 2009, 22:18:02 »

Am creat o functie.

Cod:
long long int put(long int a,long int b,long int c)
    {
    int rez,aux;
    if (b%2!=0) aux=pow(a,b-1)*a;
       else aux=pow(a,b/2)*pow(a,b/2);
    rez=aux%c;
    return rez;
    }

Iau 0 puncte pe rezolvarea mea. Ce as putea optimiza, am citit topicul si am aplicat ceea ce am gasit. What's the problem?  Eh?

Cod:
  if (b%2!=0) aux=pow(a,b-1)*a;
       else aux=pow(a,b/2)*pow(a,b/2);

pow-ul e problema.

« Ultima modificare: Iulie 23, 2009, 22:54:53 de către Mihai Cristian Calancea » Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #41 : Iulie 23, 2009, 22:27:37 »

Sa incerc intr-un for ?  Think

Edit:

Asa?

Cod:
long long int put(long int a,long int b,long int c)
    {
    int rez,aux=1,i;
    if (b%2!=0)
       {
       for (i=1;i<=b-1;i++)
           aux*=a;
       aux*=a;
       }
    else
         {
         for (i=1;i<=b/2;i++)
             aux*=a;
         for (i=1;i<=b/2;i++)
             aux*=a;
         }
    rez=aux%c;
    return rez;
    }

Sau exista o metoda mai buna?
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #42 : Iulie 23, 2009, 22:52:40 »


Nu , mai . B-ul e pana in 1 << 32 pow ( a ,  b/2 ) e urias , degeaba ai facut functia aia daca folosesti pow . Ideea e sa fie recursiva ( desi nu neaparat ) si sa scapi de problema asta. Uita-te pe ridicare la putere in timp logaritmic , ai si surse acolo . Si mai uita-te si pe restul topicului...
Memorat
miculprogramator
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #43 : Iulie 23, 2009, 23:05:02 »

Multumesc mult pentru ajutor, a iesit !  Dancing
Memorat
robigi
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 40



Vezi Profilul
« Răspunde #44 : Iulie 21, 2010, 18:47:57 »

doar ca fapt divers as intreba de ce solutia asta ia 90 pct cu TLE pe testul 9?

Cod:
cv=a;
for (int i=0; (1<<i)<=b; ++i)
{
if (((1<<i)&b)>0)
sol=(sol*cv)%c;
cv=(cv*cv)%c;
            }

sper ca nu ajut prea mult cu codu asta, dar daca da rog un admin sa-l stearga
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #45 : Iulie 21, 2010, 20:43:58 »

Daca b > 2^30, atunci i-ul ar ajunge 31, dar 2^31 iese din int si se face overflow.
Memorat

Am zis Mr. Green
robigi
Strain
*

Karma: 5
Deconectat Deconectat

Mesaje: 40



Vezi Profilul
« Răspunde #46 : Iulie 22, 2010, 12:16:38 »

a' da chiar  Brick wall,  mersi
ar fi trebuit sa pun unsigned int32 ca sa intre
Memorat
laurion
De-al casei
***

Karma: -41
Deconectat Deconectat

Mesaje: 102



Vezi Profilul
« Răspunde #47 : Martie 01, 2011, 11:21:55 »

dupa lupte seculare  Weightlift am reusit sa imi dau seama de ce luam numai 90p, pt ca declaram variabilele "register unsigned long long int"
putin ciudat, dupa ce am sters "register" am luat 100 Winner 1st place
sunt curios de ce  Think
Memorat
alex_ovidiunitu
Strain
*

Karma: 11
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #48 : August 31, 2011, 16:37:58 »

sursa mea ia 90 de puncte (iau WA pe testul 7 ) Brick wall.
imi puteti spune ce e gresit aici:
Cod:
        p=1;
f>>a>>b>>c;
for(i=1;i<=b%c;i++)
p=(p*(a%c))%c;
g<<p%c;
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #49 : August 31, 2011, 16:56:50 »

Verifica posturile anterioare.

pt a=4, b=4, c=4 iti afiseaza 1, iar rez e 0...deci e doar o coincidenta ca iei atat de mult, deoarece (a^b)mod(c) nici in o mie de ani nu va fi (a mod c)^(b mod c), adica principiu pe care spui tu ca te bazezi
Memorat
Pagini: 1 [2] 3   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines