Probleme Info
Probleme Info
REZOLVARE:
#include <fstream>
using namespace std;
ifstream is("date.in");
ofstream os("date.out");
int x[15],n;
void afis()
{
for(int i=1;i<=n;i++)
os<<x[i]<<" ";
os<<endl;
}
void back01(int k)
{
for(int i=0;i<=1;i++)
{
x[k]=i;
if(k>1) if(x[k]*x[k-1]!=1)
if(k==n) afis();
else back01(k+1);
else ;
else back01(k+1);
}
}
int main()
{
is>>n;
back01(1);
is.close();
os.close();
return 0;
}
2. Se citesc doua numere naturale n si k. Generati si afisati toate toate numerele naturale formate
din n cifre care contin exact k cifre de 1.
REZOLVARE:
#include <iostream>
using namespace std;
int x[50],n,k;
void afis()
{
for(int i=1;i<=n;i++)
cout<<x[i];
cout<<endl;
}
REZOLVARE:
#include<iostream>
int x[100],pus[100],n,nr=0;
void Write()
{ for(int i=1;i<=n;i++) cout<<x[i];
cout<<endl;
nr++;
}
void Perm(int k)
{ for(int i=1;i<=9;i=i+2)
if(!pus[i])
{ x[k]=i;
pus[i]=1;
if(k==n) Write();
else Perm(k+1);
pus[i]=0;
}
}
int main()
{ n=5;
Perm(1);
cout<<nr;
system("pause");
return 0;
}
4. Se citeste un numar real x. Sa se calculeze radical de ordinul 3 din x folosind un algoritm de tip
Divide et impera.
REZOLVARE:
#include<iostream>
using namespace std;
double r3(double x, double s, double d)
{
if(d-s<=0.0001) return d;
else
{ double m=(s+d)/2;
if(m*m*m<x) return r3(x,m,d);
else return r3(x,s,m);
}
}
int main()
{ double x;
cin>>x;
if(x>0) if(x<1) cout<<r3(x,0,1);
else cout<<r3(x,0,x);
else if(x>-1) cout<<r3(x,-1,0);
else cout<<r3(x,x,0);
system("pause");
return 0;
}
5. Se citeste un vector cu n elemente numere naturale. Sa se calculeze suma elementelor vectorului
folosind divide et impera.
REZOLVARE:
#include<iostream>
int main()
{
int a[100],n,i;
cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
cout<<suma(a,1,n);
system("pause");
return 0;
}