va rog frumos sa ma ajutati cu urmatoarea problema, o incerc de ceva timp dar primesc doar 50 de pct:
Aveti detalii in poze:
problema - #2419 Intalnire
Cerința
Doi prieteni se afla pe axa Ox, in puncte cu coordonate întregi. Primul se află în punctul x1 = a, iar al doilea se află în punctul x2 = b. Fiecare se poate mișca cu o poziție, la stânga sau la dreapta, de un număr nelimitat de ori. Când se mișcă, oboseala se modifică după următoarea regulă: la prima mișcare oboseala crește cu 1, la a doua mișcare oboseala crește cu 2, la a treia cu 3 și asa mai departe. De exemplu, dacă un prieten se mișcă mai întâi la stânga, apoi la dreapta, și apoi iar la stânga, oboseala lui devine 1 + 2 + 3 = 6.
Prietenii vor să se întâlnească într-un punct cu coordonata număr întreg. Aflați oboseala totală minimă pe care cei doi cei doi o vor acumula.
Anexe:
100pct:
rezolvarea mea:
using namespace std;
int a,b,ob1=0,ob2=0,obt,aux,distanta,i;
int main()
{
cin>>a>>b;
if(a>b)
{
aux=a;
a=b;
b=aux;
}
if(b-a==1)
obt=1;
distanta=b-a;
if(distanta%2==0){ //daca distanta e para o impartim in 2
a=distanta/2;
for(i=0;i<=a;i++)
ob1+=i;
obt=2*ob1;
}
if(distanta/2!=0){
a=distanta/2;
b=distanta/2 + 1;
for(i=0;i<=a;i++)
ob1+=i;
for(i=0;i<=b;i++)
ob2+=i;
obt=ob1+ob2;
}
cout< return 0;
}
Răspunsuri la întrebare
Răspuns de
4
#include <iostream>
using namespace std;
long long a,b,s,dif,s1,s2, mij;
int main()
{
cin >> a >> b;
if (a>b) dif=a-b;
else dif=b-a;
mij=dif/2;
if (mij%2==0) s1=(mij/2)*(1+mij);
else s1=mij*((1+mij)/2);
if (dif%2==0)
{
s=2*s1;
}
else
{
if ((mij+1)%2==0) s2=((mij+1)/2)*(2+mij);
else s2=((2+mij)/2)*(mij+1);
s=s1+s2;
}
cout << s;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Fizică,
8 ani în urmă
Religie,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă