aimon1337

Untitled

Feb 23rd, 2021
471
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. int n,p,x[100],produs=0;
  5. void maxim(int x[]){
  6.     int prod=1;
  7.     int i;
  8.     for(i=0;i<p;++i){
  9.         prod*=x[i];
  10.     }
  11.     if(prod>produs){
  12.         produs = prod;
  13.     }
  14. }
  15. int verif(int x[], int k){
  16.     int s=0;
  17.     if(k>0){
  18.         if(x[k]<x[k-1])
  19.             return 0;
  20.     }
  21.     for(int i=0;i<=k;++i){
  22.         s+=x[i];
  23.     }
  24.     return (s<=n);
  25. }
  26. int solutie(int x[], int k){
  27.     int s=0;;
  28.     if(k!=p)
  29.         return 0;
  30.     for(int i=0;i<p;++i)
  31.         s+=x[i];
  32.     return (s==n);
  33. }
  34. void back(){
  35.     int i;
  36.     int k=0;
  37.     for(i=0;i<p;++i)
  38.         x[i]=0;
  39.     while(k>-1){
  40.         if(solutie(x,k)){
  41.             maxim(x);
  42.             k--;
  43.         }
  44.         else{
  45.             if(x[k]<n){
  46.                 x[k]++;
  47.                 if (verif(x,k))
  48.                     k++;
  49.             }
  50.             else {
  51.                 x[k]=0;
  52.                 k--;
  53.             }
  54.         }
  55.     }
  56. }
  57. int main(){
  58.     cin>>n>>p;
  59.     back();
  60.     cout<<produs;
  61.     return 0;
  62. }
RAW Paste Data