3 条题解

  • 2
    @ 2024-5-15 20:05:57

    使用自带函数即可,不过需要注意: yy 是正实数

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        double y;
        cin >> y;
        cout << fixed << setprecision(4) << cbrt(y) << endl;
        return 0;
    }
    
    • 1
      @ 2024-3-25 21:06:06
      #include <bits/stdc++.h>
      using namespace std;
      int main() {  
          double y;  
          cin >> y;
          double root = pow(y, 1.0 / 3.0);
          cout << fixed << setprecision(4) << root << endl;   
           return 0;`
      }
      

      程序的工作流程如下:

      1. 包含头文件​:程序开始时,包含了头文件。
      2. 使用命名空间​:using namespace std; 这行代码使得我们可以直接使用标准库中的名称,而不必每次都加上std::前缀。
      3. 主函数​:int main() 是程序的入口点。
      4. 变量声明​:double y; 声明了一个双精度浮点数变量y,用于存储输入的数值。
      5. 输入​:cin >> y; 从标准输入(通常是键盘)读取一个双精度浮点数,并将其存储在变量y中。
      6. 计算​:double root = pow(y, 1.0 / 3.0); 使用pow函数计算y的三次方根。这里,1.0 / 3.0是计算三分之一的精确方式,以避免整数除法。结果存储在root变量中。
      7. 输出​:cout << fixed << setprecision(4) << root << endl; 这行代码做了几件事情:
        • fixed 设置输出格式为固定小数点,而不是科学计数法。
        • setprecision(4) 设置输出的小数点后的位数为4。
        • root 是要输出的数值。
        • endl 表示输出一个换行符,并刷新输出缓冲区。
      8. 结束​:return 0; 表示程序正常结束。
      • -1
        @ 2024-2-8 20:36:25

        一种比较形式化的写法

        #include<bits/stdc++.h>
        #define ll long long
        #define db double
        using namespace std;
        const db ANS=1e6,eps=1e-6;
        ll n;
        bool check(db x){
        	return x*x*x<n;
        }
        db bf(){
        	db l=1,mid,r=ANS;
        	while(r-l>eps){
        		mid=(l+r)/2;
        		if(check(mid))
        			l=mid;
        		else
        			r=mid;
        	}
        	return r;
        }
        int main(){
        	scanf("%lld",&n);
        	printf("%.4f",bf());
        	return 0;
        }
        
        • 1

        信息

        ID
        659
        时间
        1000ms
        内存
        256MiB
        难度
        5
        标签
        (无)
        递交数
        193
        已通过
        70
        上传者