•wefgef
|
|
« : Decembrie 13, 2010, 00:37:03 » |
|
Aici puteti discuta despre problema Kbiti.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•hunter_ionutzzz
Strain
Karma: 2
Deconectat
Mesaje: 15
|
|
« Răspunde #1 : Decembrie 13, 2010, 15:20:38 » |
|
80 de pct...nasol la ultimele 2 teste imi da eroare la timp
|
|
|
Memorat
|
|
|
|
•dornescuvlad
|
|
« Răspunde #2 : Decembrie 13, 2010, 16:01:47 » |
|
80 de pct...nasol la ultimele 2 teste imi da eroare la timp
Incearca sa schimbi citirea.Foloseste gets(S) pentru a citi o linie (un sir de biti de lungime L).
|
|
|
Memorat
|
|
|
|
•eudanip
|
|
« Răspunde #3 : Decembrie 20, 2010, 16:10:57 » |
|
Foloseste urmatoarea citire:
scanf("%s",s);
E cea mai rapida citire care o stiu dar nu trebuie folosita mereu. In cazul in care ai spatii sau lungimea sirului depaseste 30 000 (sau asa ceva) e indicat sa nu o folosesti. In cazul acestei probleme ar trebui sa mearga.
Multa bafta.
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #4 : Decembrie 20, 2010, 17:08:49 » |
|
Pot sa te contrazic, fgets e mult mai rapid, eu am citit cu scanf, am avut 90 pct. iar cu fgets am luat 100 lejer. Cand volumul de date este mare, fgets face diferenta .
|
|
|
Memorat
|
|
|
|
•brainwashed20
Strain
Karma: -2
Deconectat
Mesaje: 13
|
|
« Răspunde #5 : Decembrie 29, 2010, 22:51:24 » |
|
Puteti va rog sa ma ajutati sa-mi spuneti ce anume este gresit in sursa mea? Iau 90p si chiar nu inteleg unde este greseala... #include<cstdio> #include<cstring>
using namespace std;
int main() { freopen("kbiti.in","r",stdin); freopen("kbiti.out","w",stdout); char sir[32]; int T, i, j; long long int sol; scanf("%d\n",&T); while(T--) { scanf("%s",sir); for(sol=0, i=strlen(sir)-1, j=0; i>=0; i--, j++) sol+=(long long int)(sir[i]-'0')*(long long int)(1<<j); printf("%lld\n",++sol); } return 0; }
|
|
|
Memorat
|
|
|
|
•mathboy
|
|
« Răspunde #6 : Decembrie 29, 2010, 23:27:04 » |
|
Declara char sir [33] apoi inlocuieste sol+=(long long int)(sir[i]-'0')*(long long int)(1<<j); cu asta sol+=(sir[i]-'0')*(1LL<<j); si o sa ai 100
|
|
|
Memorat
|
|
|
|
•brainwashed20
Strain
Karma: -2
Deconectat
Mesaje: 13
|
|
« Răspunde #7 : Decembrie 30, 2010, 02:00:06 » |
|
mersi, acum merge. dar nu inteleg, ce face exact instructiunea asta "1LL" si practic de ce nu merge cum faceam eu?
|
|
|
Memorat
|
|
|
|
•sima_cotizo
|
|
« Răspunde #8 : Decembrie 30, 2010, 07:42:24 » |
|
"1LL" este numarul 1 de tip long long. La cum faceai tu, intai se efectua shift si dupa conversia catre long long: practic rezultatul shiftarii ramanea int pana la conversie, de unde si rezultatul eronat. Cred ca ar fi mers si:
|
|
|
Memorat
|
|
|
|
•brainwashed20
Strain
Karma: -2
Deconectat
Mesaje: 13
|
|
« Răspunde #9 : Decembrie 30, 2010, 11:33:35 » |
|
aha, am inteles. multumesc mult de ajutor:)
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #10 : Ianuarie 20, 2011, 10:30:34 » |
|
Un sfat pentru cei din Pascal, ca sa luati 100 pct. Folositi SetTextBuf : var Bufin : array[1 .. 1 shl 17] of char; Bufou : array[1 .. 1 shl 17] of char; begin ............. SetTextBuf ( fisierin, Bufin ) ; SetTextBuf ( fisierout, Bufou ) ; end .
|
|
|
Memorat
|
|
|
|
•NicuCJ
Strain
Karma: 6
Deconectat
Mesaje: 44
|
|
« Răspunde #11 : Mai 08, 2012, 17:51:28 » |
|
Eu am luat 100 cu un vector de puteri de la 2^1 pana la 2^32 (poate ajuta pe cineva).
|
|
|
Memorat
|
|
|
|
|
•geniucos
|
|
« Răspunde #13 : Mai 08, 2012, 19:45:42 » |
|
Eu iau 90 si nu inteleg de ce.Ma poate ajuta si pe mine cineva? gets(a+1); m=strlen(a+1); p=0; for(j=1;j<=m;j++) if(a[j]=='1') p=(unsigned long long)p+(1<<(m-j)); printf("%lld\n",p+1); Edit: cand postezi cod in mesaje pe forum trebuie sa folosesti tag-ul code
|
|
« Ultima modificare: Mai 08, 2012, 20:19:50 de către Mihai-Alexandru Dusmanu »
|
Memorat
|
|
|
|
•dushmi
|
|
« Răspunde #14 : Mai 08, 2012, 20:22:15 » |
|
Incearca sa faci cum e scris mai jos . S-ar putea sa mearga. Cred ca la tine se buseste daca faci (1 << 31).
|
|
|
Memorat
|
|
|
|
•geniucos
|
|
« Răspunde #15 : Mai 13, 2012, 14:58:05 » |
|
Ms asta era greseala am luat 100
|
|
|
Memorat
|
|
|
|
•vld7
Strain
Karma: 7
Deconectat
Mesaje: 17
|
|
« Răspunde #16 : Octombrie 01, 2012, 21:58:43 » |
|
Nu prea are legatura cu problema ci cu cast-ul. Nu inteleg de ce nu merge sa faci asa: long long sol = 0; sol += 1 << 31;
Pentru ca 1 << 31 nu incape pe int ci maxim (1 << 31) - 1 ? Daca as avea long long sum; int a = b = (1 << 31) - 1; sum = a + b;
Merge direct sau tre sa fac cast si sa scriu sum = 1LL * a + b pentru ca (a + b) depaseste tipul lor de date(int) ?
|
|
|
Memorat
|
|
|
|
|