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.
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
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 }