Java教程

尼科彻斯定理

本文主要是介绍尼科彻斯定理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

尼科彻斯定理

     暝色入高楼  有人楼上愁

 

题目描述

验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。

例如:

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。 本题含有多组输入数据。

输入描述:

输入一个int整数

输出描述:

输出分解后的string

示例1

输入

6

输出

31+33+35+37+39+41

Java代码:

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 
 5 /**
 6   * 1^3 = 1*1*1 = 1 =》1个连续奇数之和:1
 7   * 2^3 = 2*2*2 = 8 =》2个连续奇数之和: 3 + 5 = 8
 8   * 3^3 = 3*3*3 = 27 =》3个连续奇数之和:7 + 9 + 11 = 27
 9   * 4^3 = 4*4*4 = 64 =》4个连续奇数之和:15 + 17 + 19 + 21 = 64
10   * 对比发现规律:连续奇数之间相差均为2,即公差为2,d = 2
11   * 题目要“将m的立方写成m个连续奇数之和的形式输出”,只要我们知道了第一个数,往后+2,就可以得到后面的值了
12   * 由公差联想到高中的等差数列:Sn=a1*n+[n*(n-1)*d]/2
13   * 输入Sn 已知,即项目n & 等差数列和Sn & 公差d 均已知,求首项a1
14   * a1 = Sn/n - (n-1)
15   **/
16   public class Main{
17       public static void main(String[] args) throws IOException{
18           BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
19           String inputContent = "";
20           while((inputContent = bufferReader.readLine()) != null){
21               int n = Integer.parseInt(inputContent); // 转换之后的输入整数
22               long sum = (long)Math.pow(n,3); // 整数n的立方 = Sn
23               int a1 = (int)sum/n - (n -1); //代入公差d=2,得出首项 a1 表达式
24               StringBuilder result = new StringBuilder(Integer.toString(a1));
25               for(int i = 1; i < n; i++){ // d = 2,首项+2 往后循环
26                   a1 = a1 + 2;
27                   result.append("+");  // 拼接
28                   result.append(a1);
29               }
30               System.out.println(result); // 输出
31           }
32       }
33       
34   }

验证通过

 

 

 

                                               暝色入高楼
                      有人楼上愁




这篇关于尼科彻斯定理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!