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

Cerința Un domeniu pătrat (cu albastru), ca cel din figură trebuie apărat. Domeniul e împărțit în pătrățele. Latura domeniului este de n pătrățele, n≥7. Pe culoarele colorate patrulează 3 soldați, care încep patrularea din colțul stânga sus în același moment (poziția inițială). În exemplul de mai jos avem n=9. Cei 3 soldați (garda) se vor schimba cu alți 3 soldați în momentul în care ajung în poziția inițială, simultan. Soldații patrulează în sensul acelor de ceasornic fiecare cu aceeași viteză constantă, și fiecare pe culoarul său. Să se scrie un program care determină numărul de circuite complete pentru fiecare soldat (un circuit complet este făcut de un soldat oarecare, pe același culoar până ajunge în poziția inițială), pentru schimbarea gărzii. S1 patrulează pe culoarul galben, S2 pe gri, S3 pe roșu. Albastrul este cetatea care trebuie apărată.

Date de intrare Programul citește de la tastatură numărul n.

Date de ieșire Programul va afișa pe ecran numerele c1, c2 și c3 reprezentând numărul de circuite complete pe care le face fiecare soldat.

Restricții și precizări 7 ≤ n ≤ 1000
Problema 2748 pe pbinfo

Răspunsuri la întrebare

Răspuns de boiustef
3

#include <iostream>

using namespace std;

int main()

{

   long long n, traseu1, traseu2, traseu3, cmmmc, p, r, c1, c2, c3;

   cin >> n;

   traseu1=(n-2)*4+4;

   n=n-2;

   traseu2=(n-2)*4+4;

   n=n-2;

   traseu3=(n-2)*4+4;

   int a=traseu1, b=traseu2, c=traseu3;

   p=a*b;

   r=a%b;

   while (r!=0)

   {

       a=b;

       b=r;

       r=a%b;

   }

   cmmmc=p/b;

   p=cmmmc*c;

   r=c%cmmmc;

   while (r!=0)

   {

       c=cmmmc;

       cmmmc=r;

       r=c%cmmmc;

   }

   cmmmc=p/cmmmc;

   c1=cmmmc/traseu1;

   c2=cmmmc/traseu2;

   c3=cmmmc/traseu3;

   cout << c1 << " " << c2 << " " << c3;

}

Alte întrebări interesante