#include <iostream> #include <string> using namespace std; typedef long long ll; string addString(string a, string b) { int carry = 0; //进位 string res = ""; int i = a.length()-1; int j = b.length()-1; while(i>=0 && j>=0) { int cur_sum = (a[i]-'0') + (b[j]-'0') + carry; res = char(cur_sum%10+'0') + res; carry = cur_sum/10; i--; j--; } while(i>=0) { int cur_sum = (a[i]-'0')+carry; res = char(cur_sum%10+'0') + res; carry = cur_sum/10; i--; } while(j>=0) { int cur_sum = (b[j]-'0')+carry; res = char(cur_sum%10+'0') + res; carry = cur_sum/10; j--; } if(carry>0) { res = char(carry+'0') + res; } return res; } string mulString(string a, int x) { int carry = 0; int i = a.length()-1; string res = ""; while(i>=0) { int cur_times = (a[i]-'0')*x + carry; res = char(cur_times%10+'0') + res; carry = cur_times/10; i--; } if(carry>0) { res = char(carry+'0') + res; } return res; } string MulString(string a, string b) { string res = ""; int len_b = b.length(); for(int i = 0; i<len_b; i++) { int x = b[len_b-1-i]-'0'; string cur_times = mulString(a, x); for(int j = 0; j<i; j++) { cur_times = mulString(cur_times, 10); } res = addString(res, cur_times); } return res; } int main() { int n; while (cin >> n) { // 注意 while 处理多个 case string res = "1"; for(int i = 2; i<=n; i++) { res = MulString(res, to_string(i)); } cout << res << endl; } } // 64 位输出请用 printf("%lld")