fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6. long long N;
  7. const long long X = 1000;
  8. cin >> N;
  9.  
  10. if (N == 0) {
  11. cout << 0;
  12. return 0;
  13. }
  14.  
  15. // Phân tích số thành các hệ số theo cơ số X
  16. vector<long long> x;
  17. long long num = N;
  18. while (num != 0) {
  19. long long a = num % X;
  20. num /= X;
  21. // Điều chỉnh hệ số để nằm trong khoảng -X/2 < a <= X/2
  22. if (a > X / 2) {
  23. a -= X;
  24. num += 1;
  25. }
  26. else if (a < -X / 2) {
  27. a += X;
  28. num -= 1;
  29. }
  30. x.push_back(a);
  31. }
  32.  
  33. // Xây dựng chuỗi đa thức
  34. string ans = "";
  35. int degree = (int)x.size() - 1;
  36. for (int i = degree; i >= 0; --i) {
  37. long long coeff = x[i];
  38. if (coeff == 0) continue;
  39. // Xử lý dấu
  40. if (!ans.empty()) {
  41. if (coeff > 0)
  42. ans += " + ";
  43. else {
  44. ans += " - ";
  45. coeff = -coeff;
  46. }
  47. }
  48. else {
  49. if (coeff < 0) {
  50. ans += "-";
  51. coeff = -coeff;
  52. }
  53. }
  54.  
  55. // Xử lý hệ số
  56. if (!(coeff == 1 && i != 0))
  57. ans += to_string(coeff);
  58.  
  59. // Xử lý biến và số mũ
  60. if (i > 0) {
  61. ans += "x";
  62. if (i > 1)
  63. ans += "^" + to_string(i);
  64. }
  65. }
  66.  
  67. cout << ans;
  68. return 0;
  69. }
  70.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
23x^4 - 5x^3 - 58x^2 + 357x - 288