Se dau n numere naturale distincte. Determinaţi câte triunghiuri distincte pot avea lungimile laturilor printre aceste numere.
artur99:
ai poate vreun exemplu?
3 5 10 7 6
Răspunsuri la întrebare
Răspuns de
10
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n,c=0,i,j,k;
cin>>n;int v[n];
for(i=0;i<n;i++)cin>>v[i];
sort(v, v+n);
for (i = 0; i < n-2; ++i){
k = i+2;
for (j = i+1; j < n; ++j){
while (k < n && v[i] + v[j] > v[k])
++k;
c += k - j - 1;
}
}
cout<<c;
}
#include <algorithm>
using namespace std;
int main(){
int n,c=0,i,j,k;
cin>>n;int v[n];
for(i=0;i<n;i++)cin>>v[i];
sort(v, v+n);
for (i = 0; i < n-2; ++i){
k = i+2;
for (j = i+1; j < n; ++j){
while (k < n && v[i] + v[j] > v[k])
++k;
c += k - j - 1;
}
}
cout<<c;
}
Răspuns de
4
Acelasi lucru, ca si varul :) Poate te ajuta la ceva
#include <iostream>
#include <algorithm>
using namespace std;
const int NMAX = 100000;
int v[NMAX], n, nr;
int main()
{
cin >> n;
for(int i=1; i<=n; i++) cin >> v[i];
sort(v + 1, v + n + 1);
for(int i=1; i<=n-2; i++)
for(int j=i+1; j<=n-1; j++)
for(int k=j+1; k<=n; k++)
if(v[i] + v[j] > v[k])
nr++;
cout << nr << '\n';
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
const int NMAX = 100000;
int v[NMAX], n, nr;
int main()
{
cin >> n;
for(int i=1; i<=n; i++) cin >> v[i];
sort(v + 1, v + n + 1);
for(int i=1; i<=n-2; i++)
for(int j=i+1; j<=n-1; j++)
for(int k=j+1; k<=n; k++)
if(v[i] + v[j] > v[k])
nr++;
cout << nr << '\n';
return 0;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Ed. tehnologică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă