Advertisement
den4ik2003

Untitled

Nov 24th, 2021
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.95 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. long long ans = 0;
  4.  
  5. int convert(char* s) {
  6.     int result = 0;
  7.     int scr = 0;
  8.     while (*s != '\0') {
  9.         s++;
  10.         scr++;
  11.     }
  12.     s--;
  13.     for (int digit = 1, ten = 1; digit <= scr; digit++) {
  14.         int l = '0';
  15.         result += (*s - l) * ten;
  16.         ten *= 10;
  17.         s--;
  18.     }
  19.     return result;
  20. }
  21.  
  22. void Permutation(int k, long long product, int* sizes, int** array, int n) { //n - число массивов
  23.     if (k == n) { //тк 0-нумерация
  24.         ans += product;
  25.         return;
  26.     }
  27.     for (int i = 0; i < sizes[k]; i++) {
  28.         if (array[k][i] == 0) {
  29.             continue;
  30.         }
  31.         product *= array[k][i];
  32.         Permutation(k + 1, product, sizes, array, n);
  33.         product /= array[k][i];
  34.     }
  35. }
  36.  
  37. int main(int argc, char** argv) {
  38.     int* sizes = new int[argc - 1];
  39.     int** array = new int*[argc - 1];
  40.     for (int i = 1; i < argc; i++) {
  41.         sizes[i - 1] = convert(argv[i]); //заполнили массив длины массивов
  42.     }
  43.  
  44.     for (int j = 0; j < argc - 1; j++) {
  45.         array[j] = new int[sizes[j]];
  46.         for (int el = 0; el < sizes[j]; el++) {
  47.             int temp;
  48.             std::cin >> temp;
  49.             array[j][el] = temp;
  50.         }
  51.     }
  52.     int n = argc - 1;
  53.     Permutation(0, 1, sizes, array, n);
  54.  
  55.     std::cout << ans << "\n";
  56.  
  57.     for (int j = 0; j < argc - 1; j++) {
  58.         delete[] array[j];
  59.     }
  60.     delete[] array;
  61.     delete[] sizes;
  62.    
  63.     /* тк в cout с c-style строками всё ок
  64.     int** p = new int* [argc - 1]; //указатель на массив массивов
  65.     for (int i = 0; i < argc - 1; i++) {
  66.         int size = *argv[i+1];
  67.         p[i] = new int[size];
  68.         for (int j = 0; j < *argv[i + 1]; j++) {
  69.             std::cin >> p[i][j];
  70.         }
  71.     }
  72.  
  73.  
  74.     for (int i = 0; i < argc - 1; i++) {
  75.         delete[] p[i];
  76.     }
  77.     delete[] p; */
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement