multi-factoriel de la Coupe du Blue Bridge

description du problème
  Nous savons n factoriel représente n * (n-1) * (n-2) * ...... * 2 * 1, un semblable, multifactorielle peut être défini, par exemple :! 5! ! = 1 * 3 * 5, à son tour , peut avoir n! ...! (K a '!', Peut être simplement exprimée en n (k)!) = N * (nk) * (n-2k) * .... (jusqu'à ce que le dernier numéro <= 0).
  Maintenant , la valeur d'un ensemble de données n, k, m, où m = 1, et calcule et délivre n (1) + N ( 2) + ...... + n (k)! Is, m = et la somme des nombres 2 calcule et N sorties (1) + n ( 2) + ...... + n (k)! bits respectifs.
Format d'entrée
  Deux rangées, la première rangée et le n k, la deuxième ligne m.
Format de sortie
  Ligne de n (1) + N (2) + ...... + n (k)! Or la valeur n (1) + N (2) + ...... + n chiffres et sur (k)! de bits individuels.
entrée d'échantillon
5 1
2
Exemple de sortie
3
données d'échelle et conventions
  0 <k <n <= 20
idées de résolution de problèmes: sujet bluff, ce modèle à une haute précision, gamme de données look, le pire des cas est n = 20, k = 1, un nombre maximal de 20 + 19 + 18 + ... !!! +1 capable de sauver assez!, avec de longs temps, faire des questions regardent les données vont plus loin. En incluant différents types de valeurs variables, faisant référence https://blog.csdn.net/sinat_31275315/article/details/90477866.
1 #include <bits / stdc ++ h.>
 2 en  utilisant l'  espace de noms std;
3  int main () {
 4      cout << " int的最大最小值" << endl; 
5      Cout << INT_MAX << endl; 
6      Cout << INT_MIN << endl; 
7      Cout << " à long的最大最小值" << endl; 
8      Cout << LONG_MAX << endl; 
9      Cout << LONG_MIN << endl; 
10      Cout << "endl; 
11      Cout << LONG_LONG_MAX << endl; 
12      Cout << LONG_LONG_MIN << endl; 
13      Cout << " unsiged long long的最大最小值" << endl; 
14      Cout << ULLONG_MAX << endl; 
15      // unsigned long long最小值为0 
16      Cout << " float的最大最小值" << endl; 
17      Cout << FLT_MAX << endl; 
18      Cout << FLT_MIN << endl; 
19      Cout << "endl; 
20      Cout << DBL_MAX << endl; 
21      Cout << DBL_MIN << endl; 
22      retour  0 ;
23 }

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     int n, k, m;
 5     cin >> n >> k >> m;
 6     long long t;
 7     long long ans = 0; //ans存储n(1)!+n(2)!+......+n(k)!的值 
 8     for (int i = 1; i <= k; i++) {  
 9         t = 1; //t存储n(i)!的值 
10         for (int j = n; j > 0; j -= i) {
11             t *= j;
12         }
13         ans += t;
14     }
15     if (m == 1) {
16         cout << ans << endl;
17     } else {
18         int res = 0; //res存储ans这个数各个位上的数字之和 
19         while (ans) {
20             res += ans % 10; //拆出每一位 
21             ans /= 10;
22         }
23         cout << res << endl;
24     }
25     return 0;
26 }

 

 

 

Je suppose que tu aimes

Origine www.cnblogs.com/fx1998/p/12600981.html
conseillé
Classement