•wefgef
|
 |
« 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
|
 |
« Răspunde #26 : Februarie 26, 2008, 22:21:29 » |
|
Si eventual asculta si sfaturile care ti se dau.
|
|
|
Memorat
|
|
|
|
|
•DITzoneC
|
 |
« Răspunde #28 : Martie 16, 2008, 19:37:47 » |
|
Cateva observatii: * tu aici citesti doar a Eventual pune * in cadrul acestui for tu nu faci nimic pentru ca ai pus ; intre for si instructiune, deci la tine mereu m = a; 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
|
 |
« Răspunde #29 : Martie 19, 2008, 16:11:03 » |
|
mersi amreusit sa iau 100 
|
|
|
Memorat
|
|
|
|
•jupanu92
Client obisnuit

Karma: -86
Deconectat
Mesaje: 76
|
 |
« 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 
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« 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
Mesaje: 76
|
 |
« Răspunde #32 : Aprilie 09, 2008, 21:45:29 » |
|
Gata , am rezolvat problema asta era mersi !
|
|
|
Memorat
|
|
|
|
•Magnus
Client obisnuit

Karma: 0
Deconectat
Mesaje: 57
|
 |
« Răspunde #33 : Mai 07, 2009, 17:23:06 » |
|
#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
|
 |
« 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
Mesaje: 57
|
 |
« Răspunde #35 : Mai 07, 2009, 20:11:41 » |
|
ms mult a mers 
|
|
|
Memorat
|
|
|
|
•Alexa_ioana_14
Strain
Karma: 6
Deconectat
Mesaje: 37
|
 |
« 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
Mesaje: 8
|
 |
« Răspunde #37 : Mai 14, 2009, 13:54:58 » |
|
încearca ca în loc de a b = (a*a) b/2 pentru b par să foloseşti a b = a b/2 * a b/2evident pe a b/2 îl calculezi o singură dată şi îl memorezi... cel puţin la mine a mers 
|
|
|
Memorat
|
|
|
|
•Alexa_ioana_14
Strain
Karma: 6
Deconectat
Mesaje: 37
|
 |
« Răspunde #38 : Mai 15, 2009, 10:54:00 » |
|
ok, mersi mult! 
|
|
|
Memorat
|
|
|
|
•miculprogramator
|
 |
« Răspunde #39 : Iulie 23, 2009, 22:06:10 » |
|
Am creat o functie. 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? 
|
|
|
Memorat
|
|
|
|
•klamathix
|
 |
« Răspunde #40 : Iulie 23, 2009, 22:18:02 » |
|
Am creat o functie. 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?  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
|
 |
« Răspunde #41 : Iulie 23, 2009, 22:27:37 » |
|
Sa incerc intr-un for ?  Edit: Asa? 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
|
 |
« 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
|
 |
« Răspunde #43 : Iulie 23, 2009, 23:05:02 » |
|
Multumesc mult pentru ajutor, a iesit ! 
|
|
|
Memorat
|
|
|
|
•robigi
Strain
Karma: 5
Deconectat
Mesaje: 40
|
 |
« 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? 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
|
 |
« 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 
|
|
|
•robigi
Strain
Karma: 5
Deconectat
Mesaje: 40
|
 |
« Răspunde #46 : Iulie 22, 2010, 12:16:38 » |
|
a' da chiar  , mersi ar fi trebuit sa pun unsigned int32 ca sa intre
|
|
|
Memorat
|
|
|
|
•laurion
|
 |
« Răspunde #47 : Martie 01, 2011, 11:21:55 » |
|
dupa lupte seculare  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  sunt curios de ce 
|
|
|
Memorat
|
|
|
|
•alex_ovidiunitu
Strain
Karma: 11
Deconectat
Mesaje: 25
|
 |
« Răspunde #48 : August 31, 2011, 16:37:58 » |
|
sursa mea ia 90 de puncte (iau WA pe testul 7 )  . imi puteti spune ce e gresit aici: p=1; f>>a>>b>>c; for(i=1;i<=b%c;i++) p=(p*(a%c))%c; g<<p%c;
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
 |
« 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
|
|
|
|
|