infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Adrian Diaconu din August 13, 2007, 22:41:18



Titlul: 476 Cartele
Scris de: Adrian Diaconu din August 13, 2007, 22:41:18
Aici puteţi discuta despre problema Cartele (http://infoarena.ro/problema/cartele).


Titlul: Răspuns: 476 Cartele
Scris de: Radu Zernoveanu din Ianuarie 23, 2008, 13:05:22
Cate moduri de a baga cartela sunt?  :?


[Later edit: Am refacut problema considerand ca sunt 8 moduri de a baga cartela si am luat 100 puncte! Multumesc oricum!]


Titlul: Răspuns: 476 Cartele
Scris de: Zaharia Radu din Martie 03, 2010, 08:53:16
8 moduri?putem sa introducem cartela si cu fata cealalta?


Titlul: Răspuns: 476 Cartele
Scris de: Cosmin-Mihai Tutunaru din Martie 03, 2010, 10:28:48
8 moduri?putem sa introducem cartela si cu fata cealalta?

Păi da. Doar așa se pot obține 8 moduri. Câte 4 pe fiecare față.


Titlul: Răspuns: 476 Cartele
Scris de: popa camil din Martie 16, 2011, 20:01:03
incercati sa desenati o cartela pe hartie si decupati-o. o sa vedeti ca-s patru moduri. daca o intorci pe partea cealalta obtii exact aceleasi 4 moduri ca si pe prima


Titlul: Răspuns: 476 Cartele
Scris de: Simoiu Robert din Martie 16, 2011, 20:02:13
Gresit. Gandeste-te ca ai un CD. E totuna daca il pui normal, sau invers ? Si aici e la fel, conteaza cum bagi cartela, pentru ca se presupune ca are un cod unic pe fiecare fata. ( asta ca o explicatie )


Titlul: Răspuns: 476 Cartele
Scris de: Cobzaru Adrian-Andrei din Martie 27, 2012, 16:29:44
Iau doar primele 3 teste, pe ultimele 7 am WA.Am tratat toate cele 8 cazuri posibile, nu ma puteti ajuta?Si as vrea si niste teste, daca se poate.


Titlul: Răspuns: 476 Cartele
Scris de: George Marcus din Martie 27, 2012, 16:49:02
Sunt disponibile testele si pe site-ul oficial si pe infoarena la Downloads.


Titlul: Răspuns: 476 Cartele
Scris de: Cobzaru Adrian-Andrei din Martie 27, 2012, 17:13:14
Ok.Am luat cateva teste si am vazut ca nu e corecta solutia mea.Eu fac asa cele 8 teste:
1.testez matricea citita
2.rotesc 90 grade stanga matricea de la 1
3.rotesc 90 grade stanga matricea de la 2
4.rotesc 90 grade stanga matricea de la 3
5.intorc cu 180 de grade matricea de la 1(linia 1-linia n,linia2-linia n-1....)
6.rotesc 90 grade stanga matricea de la 5
7.rotesc 90 grade stanga matricea de la 6
8.rotesc 90 grade stanga matricea de la 7
E gresit?


Titlul: Răspuns: 476 Cartele
Scris de: Matusa Alexandru din Martie 02, 2015, 17:42:51
#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;
int n,k,card[1000][1000],c,b,l,vari,ok1,ok,ok2,i,w,ok3,ok4,ok5,ok6,ok7,ok8,s;
int main()
{
    ifstream f("cartele.in");
    ofstream g("cartele.out");
    f>>n>>k;
    for(l=1; l<=n+k*n; l++)
    for(c=1;c<=n;c++)
        f>>card[l][c];
   for(i=1;i<=k;i++){
    w=1;
    if((card[1][w]==card[n+1][w])&&(card[1][w+1]==card[n+1][w+1])&&(card[1][w+2]==card[n+1][w+2])) ok=1;
    else if((card[1][w]==card[n+1][w+2])&&(card[1][w+1]==card[n+2][w+2])&&(card[1][w+2]==card[n+3][w+2])) ok=1;
    else if((card[1][w]==card[n+3][w])&&(card[1][w+1]==card[n+3][w+1])&&(card[1][w+2]==card[n+3][w+2])) ok=1;
    else if((card[1][w]==card[n+1][w])&&(card[1][w+1]==card[n+2][w+1])&&(card[1][w+2]==card[n+3][w+2])) ok=1;
    else ok=0;
    if (card[2][w+1]==card[n+2][w+1]) ok1=1;
    else ok1=0;
    if((card[2][w]==card[n+1][w])&&(card[2][w+1]==card[n+1][w+1])&&(card[2][w+2]==card[n+1][w+2])) ok1=1;
    else if((card[2][w]==card[n+2][w])&&(card[2][w+1]==card[n+2][w+1])&&(card[2][w+2]==card[n+2][w+2])) ok1=1;
    else if((card[2][w]==card[n+3][w])&&(card[2][w+1]==card[n+3][w+1])&&(card[2][w+2]==card[n+3][w+2])) ok1=1;
    else ok1=0;
      if((card[3][w]==card[n+1][w])&&(card[3][w+1]==card[n+1][w+1])&&(card[3][w+2]==card[n+1][w+2])) ok2=1;
    else if((card[3][w]==card[n+2][w])&&(card[3][w+1]==card[n+2][w+1])&&(card[3][w+2]==card[n+2][w+2])) ok2=1;
    else if((card[3][w]==card[n+3][w])&&(card[3][w+1]==card[n+3][w+1])&&(card[3][w+2]==card[n+3][w+2])) ok2=1;
    else ok2=0;
    if (ok==ok1==ok2==1) g<<"1"<<"\n";
    else g<<"0"<<"\n";
    n=n+n;}
    f.close ();
    g.close ();
    return 0;
}

asta e programul meu, ce sa fac sa scada memoria care o ocupa, si la teste imi zici Compilare:
user.cpp: In function ‘int main()’:
user.cpp:32:11: warning: suggest parentheses around comparison in operand of ‘==’ [-Wparentheses]
if (ok==ok1==ok2==1) g<<"1"<<"\n";
^
user.cpp:32:16: warning: suggest parentheses around comparison in operand of ‘==’ [-Wparentheses]
if (ok==ok1==ok2==1) g<<"1"<<"\n";


Titlul: Răspuns: 476 Cartele
Scris de: Neghina Dragos din Martie 28, 2016, 16:10:39
#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;
int n,k,card[1000][1000],c,b,l,vari,ok1,ok,ok2,i,w,ok3,ok4,ok5,ok6,ok7,ok8,s;
int main()
{
    ifstream f("cartele.in");
    ofstream g("cartele.out");
    f>>n>>k;
    for(l=1; l<=n+k*n; l++)
    for(c=1;c<=n;c++)
        f>>card[l][c];
   for(i=1;i<=k;i++){
    w=1;
    if((card[1][w]==card[n+1][w])&&(card[1][w+1]==card[n+1][w+1])&&(card[1][w+2]==card[n+1][w+2])) ok=1;
    else if((card[1][w]==card[n+1][w+2])&&(card[1][w+1]==card[n+2][w+2])&&(card[1][w+2]==card[n+3][w+2])) ok=1;
    else if((card[1][w]==card[n+3][w])&&(card[1][w+1]==card[n+3][w+1])&&(card[1][w+2]==card[n+3][w+2])) ok=1;
    else if((card[1][w]==card[n+1][w])&&(card[1][w+1]==card[n+2][w+1])&&(card[1][w+2]==card[n+3][w+2])) ok=1;
    else ok=0;
    if (card[2][w+1]==card[n+2][w+1]) ok1=1;
    else ok1=0;
    if((card[2][w]==card[n+1][w])&&(card[2][w+1]==card[n+1][w+1])&&(card[2][w+2]==card[n+1][w+2])) ok1=1;
    else if((card[2][w]==card[n+2][w])&&(card[2][w+1]==card[n+2][w+1])&&(card[2][w+2]==card[n+2][w+2])) ok1=1;
    else if((card[2][w]==card[n+3][w])&&(card[2][w+1]==card[n+3][w+1])&&(card[2][w+2]==card[n+3][w+2])) ok1=1;
    else ok1=0;
      if((card[3][w]==card[n+1][w])&&(card[3][w+1]==card[n+1][w+1])&&(card[3][w+2]==card[n+1][w+2])) ok2=1;
    else if((card[3][w]==card[n+2][w])&&(card[3][w+1]==card[n+2][w+1])&&(card[3][w+2]==card[n+2][w+2])) ok2=1;
    else if((card[3][w]==card[n+3][w])&&(card[3][w+1]==card[n+3][w+1])&&(card[3][w+2]==card[n+3][w+2])) ok2=1;
    else ok2=0;
    if (ok==ok1==ok2==1) g<<"1"<<"\n";
    else g<<"0"<<"\n";
    n=n+n;}
    f.close ();
    g.close ();
    return 0;
}

asta e programul meu, ce sa fac sa scada memoria care o ocupa, si la teste imi zici Compilare:
user.cpp: In function ‘int main()’:
user.cpp:32:11: warning: suggest parentheses around comparison in operand of ‘==’ [-Wparentheses]
if (ok==ok1==ok2==1) g<<"1"<<"\n";
^
user.cpp:32:16: warning: suggest parentheses around comparison in operand of ‘==’ [-Wparentheses]
if (ok==ok1==ok2==1) g<<"1"<<"\n";

nu poti compara mai mult de 2 termeni deodata,ce vrei tu sa faci se scrie corect: if(ok==ok1 && ok1==ok2 && ok2==1)...