Informatică, întrebare adresată de lxvi999, 8 ani în urmă

Gigel are o bucată de hârtie cu dimensiunile N*M și vrea să o taie în bucăți cu dimensiunile 1*1, respectând regulile:

poate să taie o singură foaie la un moment dat. Nu poate suprapune mai multe foi și să le taie în același timp;
fiecare tăietură se face dintr-o parte în alta a foii, pe verticală sau orizontală. Figura următoare arată cele trei moduri în care poate fi tăiată o foaie cu dimensiunile 3*2.

Scrieți un program care să citească numerele N și M și să determine numărul de tăieturi care trebuie efectuate.

Exemplu
Intrare

2 3
Ieșire

5






#include
using namespace std;

int main() {

int N, M, S;
cin>>N>>M;
if(N==1 && M==1)
cout<<0< else if(N==1 && M==2)
cout<<1< else if(M==1 && N==2)
cout<<1< else{
S=N*M-1;
cout< }

return 0;
}


Asa am facut o eu si nu pot intelege de ce iau 80 de pct , am testat pe diferite numere , imi puteti explica care e problema?


boiustef: nu putem discuta codul tău, eu îl văd mult trunchiat. Tu îl vezi la fel?
postez codul meu de 100...
boiustef: poate problema e in tipurile int... eu am luat long long deoarece produsul n*m va fi mai mare decat un int
boiustef: Restricții și precizări
1 ≤ N,M ≤ 1000000

Răspunsuri la întrebare

Răspuns de boiustef
5

#include <iostream>

 

using namespace std;

 

int main()

{

   long long n, m;

   cin >> n >> m;

   cout << n * m - 1;

   return 0;

}

Răspuns de pmarian98
0

#include <iostream>

using namespace std;

int main ()

{

   unsigned int n,m,S=0;

   cin>>n>>m;

   cout<<1LL*n*m-1;//treceți dincolo de dimensiunea tipului întreg -> comportament nedefinit). Cu 1LL,

}

   

Alte întrebări interesante