Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <algorithm>
- using namespace std;
- //sub III
- int Cif (int, int);
- bool IsPrime(int);
- int f(int);
- int sub (int);
- void sub(int, int, int[], int[]);
- void sub (int, int);
- void sub (int, int&, int&);
- int sum (int);
- int cif[10];
- int main()
- {
- int pb;
- cout<<"introdu numarul problemei:"<<endl; cin>>pb;
- switch (pb){
- case 1:{//3/4 - subpunct a
- int n, cifra;
- cout<<"n="; cin>>n;
- cout<<"cifra:"; cin>>cifra;
- cout<<"Cifra "<<cifra<<" apare de "<<Cif(n, cifra)<<" ori in numarul "<<n<<endl;
- break;
- }
- case 2:{//3/4 - subpunct b
- int n;
- cout<<"n="; cin>>n;
- int ok=1;
- for (int i=n; i; i/=10){
- cif[i%10]=Cif(n, i%10);
- if (cif[i%10]%2)
- ok=0;
- }
- int nr=0;
- if (!ok)
- cout<<"0"<<endl;
- for (int i=9; i>=0; i--){
- if(cif[i]){
- int nr_aparitii=cif[i];
- while (nr_aparitii>1){
- nr=nr*10+i;
- nr_aparitii/=2;
- }
- }
- }
- for (int i=0; i<=10; i++){
- if(cif[i]){
- int nr_aparitii=cif[i];
- while (nr_aparitii>1){
- nr=nr*10+i;
- nr_aparitii/=2;
- }
- }
- }
- cout<<nr<<endl;
- break;
- }
- case 3:{//5/4
- int n; cout<<"n="; cin>>n;
- cout<<"Cel mai mic divizor prim este: "<<f(n)<<endl;
- int nr;
- cout<<"Cate nr se citesc??"; cin>>nr;
- int v[nr];
- cout<<"Scrie nr:"<<endl;
- int x, ind=0;
- for (int i=0; i<nr; i++){
- cin>>x;
- if(f(x)==x)
- v[ind++]=x;
- }
- sort(v, v+ind);
- cout<<"Elementele sunt:"<<endl;
- for (int i=0; i<ind; i++)
- cout<<v[i]<<" ";
- break;
- }
- case 4:{//7/4
- int n;
- cout<<"n="; cin>>n;
- cout<<"Val apropiata este "<<sub (n)<<endl;
- int s;
- cout<<"s="; cin>>s;
- while (s){
- cout<<sub(s)<<" ";
- s-=sub(s);
- }
- break;
- }
- case 5:{//8/4
- int n; cout<<"n="; cin>>n;
- int m; cout<<"m="; cin>>m;
- int a[n], b[m];
- cout<<"Introdu elementele primului vector:"<<endl;
- for (int i=0; i<n; i++) cin>>a[i];
- cout<<"Introdu elementele celui de-al doilea vector:"<<endl;
- for (int i=0; i<m; i++) cin>>b[i];
- sub (n, m, a, b);
- break;
- }
- case 6:{//9/3
- int n, k;
- cout<<"n="; cin>>n;
- cout<<"k="; cin>>k;
- sub(n, k);
- break;
- }
- case 7:{//10/3
- int n, a, b;
- cout<<"n="; cin>>n;
- sub(n,a,b);
- cout<<"a="<<a<<endl;
- cout<<"b="<<b<<endl;
- break;
- }
- case 8:{//11/4
- int n;
- cout<<"n="; cin>>n;
- cout<<"Suma divizorilor lui "<<n<<" este "<<sum(n)<<endl;
- int nr;
- cout<<"Cate nr se citesc??"; cin>>nr;
- int x, cnt=0;
- cout<<"Introdu nr:"<<endl;
- for (int i=0; i<nr; i++){
- cin>>x;
- if (sum(x)==1+x)
- cnt++;
- }
- cout<<"In sir exista "<<cnt<<" nr prime"<<endl;
- break;
- }
- }
- return 0;
- }
- int Cif (int a, int b){
- int cnt=0;
- while (a){
- if (a%10==b)
- cnt++;
- a/=10;
- }
- return cnt;
- }
- int f (int a){
- if (a==1) return -1;
- else{
- for (int i=2; i<=a; i++){
- if (a%i==0 && IsPrime(i))
- return i;
- }
- }
- }
- bool IsPrime (int n){
- if (n==1) return false;
- if (n==2) return true;
- if (n==3) return true;
- else{
- for (int i=2; i<=sqrt(n); i++)
- if (n%i==0)
- return false;
- }
- return true;
- }
- int sub (int n){
- int val_min=10000, val;
- int v[100];
- int ind=0;
- for (int i=0; i<=5; i++){
- v[ind++]=i;
- if (abs(n-v[i])<val_min){
- val_min=abs(n-v[i]);
- val=v[i];
- }
- }
- for (int i=6; i<100; i++){
- v[i]=2*v[i-1];
- if (abs(n-v[i])<val_min){
- val_min=abs(n-v[i]);
- val=v[i];
- }
- }
- return val;
- }
- void sub (int n, int m, int a[], int b[]){
- //a - pare
- //b - impare
- int c[m+n], ind=0;
- int i=0, j=0;
- while (i<n && j<m){
- if (a[i]<b[j]){
- c[ind++]=a[i++];
- }
- else
- c[ind++]=b[j++];
- }
- //completare vector
- for (int d=i; d<n; d++)
- c[ind++]=a[d];
- for (int k=j; k<m; k++)
- c[ind++]=b[k];
- cout<<"Vectorul format este:"<<endl;
- cout<<c[0]<<" ";
- for (int i=1; i<m+n; i++){
- if (c[i]%2 != c[i-1]%2)
- cout<<c[i]<<" ";
- }
- }
- void sub (int n, int k){
- int v[n], ind=0;
- for (int i=1; i<1000; i++){
- if (i%k==0)
- v[ind++]=i;
- if (ind==n)
- break;
- }
- sort(v, v+ind, greater<int>());
- cout<<"Sirul format este:"<<endl;
- for (int i=0; i<ind; i++)
- cout<<v[i]<<" ";
- }
- void sub (int n, int& a, int& b){
- int nr=0;
- for (int i=n-1; i && nr<2; i--){
- if (IsPrime(i) && nr == 1){
- b=i;
- nr++;
- }
- if (IsPrime(i) && nr == 0){
- a=i;
- nr++;
- }
- }
- }
- int sum (int n){
- int s=0;
- for (int i=1; i<=n/2; i++)
- if(n%i==0){
- s+=i;
- }
- return s+n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement