HDOJ2009

来源:互联网 发布:申请网络音乐人 编辑:程序博客网 时间:2024/05/27 03:25

1.数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

2.想好解题思路,在m个数之内将n反复开方然后把计算好的值相加。

3.开始写代码获取输入的内容:

n = cin.nextInt();//  获取输入的第一个数据定义为nm = cin.nextInt();  //  获取输入的第一个数据定义为m
4.开始计算部分,判断计算之前先定义两个自由的变量用来存储计算的数据:

double sum = 0;//  定义一个用来存储最终输出内容的值double j = n;//  定义一个用来转换被开方的值(可以简化代码之后省略)
然后开始循环

for (int i = 0; i < m - 1; i++) {//  循环计算sum += Math.sqrt(j);//  在循环里反复将j开方 (j初始值为n)并传递给sum j = Math.sqrt(j);//  然后将开方之后的值给j}

在循环里面要注意 j = Math.sqrt(j); 的作用,把每一次开方之后的数传递给下一次循环,比如第一次是81,那第二次就成了9,第三次成了3,;

AC代码;

import java.text.DecimalFormat;import java.util.Scanner;public class index11 {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int n, m;while (cin.hasNext()) {                      n = cin.nextInt();//  获取输入的第一个数据定义为nm = cin.nextInt();  //  获取输入的第一个数据定义为mdouble sum = 0;//  定义一个用来存储最终输出内容的值double j = n;//  定义一个用来转换被开方的值(可以简化代码之后省略)for (int i = 0; i < m - 1; i++) {//  循环计算sum += Math.sqrt(j);//  在循环里反复将j开方 (j初始值为n)并传递给sum j = Math.sqrt(j);//  然后将开方之后的值给j}DecimalFormat df = new DecimalFormat("#.00");        <span style="white-space:pre"></span>  <span style="white-space:pre"></span>//  保留两位小数打印System.out.println(df.format(sum + n));}}}






0 0
原创粉丝点击