题目链接:http://acm.swust.edu.cn/problem/0566/

Time limit(ms): 1000      Memory limit(kb): 65535
 
Description
你见过猪走路,但肯定没有开过N方数。开方运算在科学计算中非常重要.那么现在你也想来挑战一下开N方数(1<=N<=100).只不过,这次的N方数是的要求是:要求截取小数点后M位(1<=M<=8).如:2的1/10方数,截取其4位是:1.0717,而没有四舍五入成为1.0718 
输入的被开方数NUM(0<=NUM<=1000),你可以用计算器来检验你的结果是否正确,记住是截取位数,不能四舍五入!

 
Input
第一行为测试数据个数 
以后每行三个数依次为被开方数NUM,方数N,精确的小数位数M(0 =< M <= 8).

 
Output
计算出的结果,每个结果占一行

 
Sample Input
5
1000 100 8
90 17 5
30 20 7
10 10 8
29 29 4
Sample Output
1.07151930
1.30303
1.1853758
1.25892541
1.1231
 
Hint 
用牛顿切线法列个方程来解
 
 
解题思路:直接一个数学题构造方程x^n=num(x是结果,方程的解) 
     关于牛顿切线法给出两个链接:(1)http://www.doc88.com/p-406549410439.html (2)http://www.docin.com/p-115591122.html
 
那么构造f(x)=x^n-num
    f`(x)=n*x^(n-1)
    x=x0-f(x)/f`(x),化简整理可得x=num^(1/n);
 
当然值得注意的是这里是截取小数后几位,不是四舍五入,那么不能用%.f来控制,我这里采用sprintf转换为字符
 
代码如下:
 #include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
double ans;
int x, n, t, k, i, j, len;
cin >> t;
while (t--){
char str[];
cin >> x >> n >> k;
ans = pow(x*1.0, * 1.0 / n);
//cout<<ans<<endl;
sprintf(str, "%.10lf", ans);
len = strlen(str);
//cout<<str<<endl;
for (i = ; i < len; i++){
if (str[i] == '.') {
cout << '.';
j = ;
while ((j++) < k)
cout << str[i + j];
break;
}
cout << str[i];
}
cout << endl;
}
return ;
}

不过好像我被hint坑了,貌似开n次方就直接1/n次幂~~~(就当补了下数学吧,以后高次方程会搞了,无爱了,万恶的hint~~~)

[Swust OJ 566]--开N方数(牛顿切线法解高次方程)的更多相关文章

  1. 洛谷P3285 [SCOI2014]方伯伯的OJ 动态开点平衡树

    洛谷P3285 [SCOI2014]方伯伯的OJ 动态开点平衡树 题目描述 方伯伯正在做他的 \(Oj\) .现在他在处理 \(Oj\) 上的用户排名问题. \(Oj\) 上注册了 \(n\) 个用户 ...

  2. [Swust OJ 404]--最小代价树(动态规划)

    题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535   Des ...

  3. nyoj 773-开方数 (pow)

    773-开方数 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:8 难度:3 题目描述: 现在给你两个数 n 和 p ,让你求出 p 的开 n 次方. 输入描述: 每组数 ...

  4. SWUST OJ NBA Finals(0649)

    NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128   Descri ...

  5. [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)

    题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...

  6. hdu 质方数

    Problem Description   小明天生对数字比较敏感,3岁的时候就能背诵圆周率一百位. 现在,小明慢慢长大了,但依然很喜欢数字,最近,他迷上了质数和平方数,并且自己把质数的平方命名为“质 ...

  7. C语言实现牛顿迭代法解方程

    利用迭代算法解决问题,需要做好以下三个方面的工作: 一.确定迭代变量 在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭 ...

  8. 基于C++的牛顿切线法演示

    牛顿切线法 中心思想: 利用目标函数二阶泰勒多项式的最优解作为函数的近似最优解.如果新的近似最优解满足计算精度,则终止计算,否则将函数在新点展开成二阶泰勒多项式,用新的泰勒多项式的最优解作为函数的近似 ...

  9. php开发面试题---php面向对象详解(对象的主要三个特性)

    php开发面试题---php面向对象详解(对象的主要三个特性) 一.总结 一句话总结: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸 ...

随机推荐

  1. 51NOD 算法马拉松8

    题目戳这里:51NOD算法马拉松8 某天晚上kpm在玩OSU!之余让我看一下B题...然后我就被坑进了51Nod... A.还是01串 水题..怎么乱写应该都可以.记个前缀和然后枚举就行了.时间复杂度 ...

  2. ubuntu vim终端编辑命令

    一. VIM高亮 进入vim后,在普通模式下输入如下命令,开启php代码高亮显示   :syntax enable   :source $VIMRUNTIME/syntax/php.vim   二. ...

  3. mybatis配置方法

    首先导入mybatis-3.1.1.jar包以及Mysql-connector-java-5.1.6-bin.jar包 新建一个数据库 create database mybatis; use myb ...

  4. C# 读书笔记之继承与多态

    1.1继承与多态的基本概念 1.1.1 继承和多态 继承是面向对象程序设计的主要特征之一,允许重用现有类(基类,亦称超类.父类)去创建新类(子类,亦称派生类)的过程.子类将获取基类的所有非私有数据和行 ...

  5. DataList嵌套绑定例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataList控件.asp ...

  6. 阻止系统自动睡眠的小软件,附C#制作过程

    原文 http://www.cnblogs.com/h46incon/p/SleepPreventer.html 因为有时下载东西的时候,不想让电脑自动深入睡眠,所以就开启了离开模式.这样不但不节能环 ...

  7. java线程学习——汉堡销售问题

    汉堡店中有一个负责做汉堡的厨师,一个负责销售的营业员,用java线程表示他们的营业过程: 问题原型就是生产者与消费者的问题. 首先定义一个汉堡包箱子类与几个相关的变量类: public class H ...

  8. D - 楼下水题(kmp+Manacher)

    D - 楼下水题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Statu ...

  9. Java对象序列化与反序列化一 JSON

    Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student {    private String nam ...

  10. 各浏览器对 window.open() 的窗口特征 sFeatures 参数支持程度存在差异

    标准参考 无. 问题描述 使用 window.open 方法可以弹出一个新窗口,其中 open 方法的 sFeatures 参数选项在各浏览器中支持程度不一,这有可能导致同样的代码使各浏览器中弹出窗口 ...