2 条题解

  • 0
    @ 2024-3-26 11:30:12

    使用字符串处理, 可以处理较输入很大很大的浮点数

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        string x_str;
        cin >> x_str;
    
        // 移除小数点后的尾随零
        x_str = x_str.substr(0, x_str.find_last_not_of('0') + 1);
    
        // 移除小数点
        size_t pos = x_str.find('.');
        if (pos != string::npos) {
            x_str.erase(pos, 1);
        }
    
        // 移除前导零,除非数字本身是0
        x_str.erase(0, min(x_str.find_first_not_of('0'), x_str.size() - 1));
    
        // 输出结果
        cout << x_str << endl;
    
        return 0;
    }
    
    • 0
      @ 2024-3-26 11:26:01

      正确解法一:小数位数不能太大

      #include <bits/stdc++.h>
      using namespace std;
      bool isAlmostInteger(long double x, long double b = 1e-9) {
          return abs(x - floor(x)) < b || abs(x - ceil(x)) < b;
      }
      int main() {
          long double xx,yy=1;
      	long long num=1;
          scanf("%Lf", &xx);
          do {
      		num*=10;
      		yy=xx*num;  
          }while (!isAlmostInteger(yy));
          cout << int(yy) << endl;
          return 0;
      }
      
      • 1

      信息

      ID
      128
      时间
      1000ms
      内存
      64MiB
      难度
      10
      标签
      递交数
      115
      已通过
      4
      上传者