2 条题解

  • 5
    @ 2024-3-28 13:06:43
    #include <bits/stdc++.h>
    using namespace std;
    int n;
    bool first = true;
    void print(long long x)
    {
        if (first) {
            first = false;
            cout << "=";
        } else {
            cout << "*";
        }
        cout << x;
    }
    int main(){
        long long a = 1, b = 1, c, n;
        cin >> n;
        for (int i = 3; i <= n; i++) {
            c = (a + b) % (1 << 31);
            a = b;
            b = c;
        }
        cout << c;
        for (int i = 2; i * i <= c; i++) {
            if (c % i == 0) {
                while (c % i == 0) {
                    c /= i;
                    print(i);
                }
            }
        }
        if (c > 1)
            print(c);
        return 0;
    }
    
    • 0
      @ 2024-1-5 16:16:39

      首先用递推求出f(n),然后分解质因数即可。需要注意输出格式,可以用一个变量first表示当前输入的是否是第一个质因数,并分情况处理。

      核心代码
      
      long long a = 1, b = 1, c, n;
      cin >> n;
      for (int i = 3; i <= n; i++) {
          c = (a + b) % (1 << 31);
          a = b;
          b = c;
      }
      cout << c;
      for (int i = 2; i * i <= c; i++) {
          if (c % i == 0) {
              while (c % i == 0) {
                  c /= i;
                  print(i);
              }
          }
      }
      if (c > 1)
          print(c);
      
      print函数
      
      bool first = true;
      void print(long long x)
      {
          if (first) {
              first = false;
              cout << "=";
          } else {
              cout << "*";
          }
          cout << x;
      }
      
      • 1

      信息

      ID
      639
      时间
      1000ms
      内存
      256MiB
      难度
      2
      标签
      (无)
      递交数
      150
      已通过
      87
      上传者