【C語言訓練】階乘和數*
阿新 • • 發佈:2019-01-07
題目連結:http://115.28.203.224/problem.php?cid=1010&pid=35
題目描述
一個正整數如果等於組成它的各位數字的階乘之和,該整數稱為階乘和數。
例如,145=1!+4!+5!,則145是一個三位階詳細和數。
請問:共有多少個階乘和數? 資料範圍 1<=x <= 1e7
輸入
輸出
所有的階乘和數(按字典序,即1打頭的在前,2打頭的次之,..., 空格分隔)
提示
資料範圍 1<=x<=1e7
程式碼
1 #include <iostream> 2 using namespace std; 3 long fac(intn) 4 { 5 long sum = 1; 6 for(int i = 1; i <= n; i++) 7 sum *= i; 8 return sum; 9 } 10 int main() 11 { 12 long m1, m2, m3, m4, m5, m6, n1, n2, n3, n4, n5, n6; 13 for(int a = 1; a <= 9; a++) 14 { 15 if (a == fac(a)) 16 cout<<a<<""; 17 for(int b = 0; b <= 9; b++) 18 { 19 m1 = a * 10 + b; 20 n1 = fac(a) + fac(b); 21 if (m1 == n1) 22 cout<<m1<<" "; 23 for(int c = 0; c <= 9; c++) 24 { 25 m2 = m1 * 10 + c; 26n2 = n1 + fac(c); 27 if (m2 == n2) 28 cout<<m2<<" "; 29 for(int d = 0; d <= 9; d++) 30 { 31 m3 = m2 * 10 + d; 32 n3 = n2 + fac(d); 33 if(m3 == n3) 34 cout<<m3<<" "; 35 for(int e = 0; e <= 9; e++) 36 { 37 m4 = m3 * 10 + e; 38 n4 = n3 + fac(e); 39 if(m4 == n4) 40 cout<<m4<<" "; 41 for(int f = 0; f <= 9; f++) 42 { 43 m5 = m4 * 10 + f; 44 n5 = n4 + fac(f); 45 if(m5 == n5) 46 cout<<m5<<" "; 47 for(int g = 0;g <= 9; g++) 48 { 49 m6 = m5 * 10 + g; 50 n6 = n5 + fac(g); 51 if(m6 == n6) 52 cout<<m6<<" "; 53 } 54 } 55 } 56 } 57 } 58 } 59 } 60 return 0; 61 }