算法刷題-尼科徹斯定理-JAVA

0x00 引言

爲獲取一個良好的算法思維,以及不再成爲一個腳本小子,爭取每天一道算法題,培養自己的邏輯思維,溫顧各類型語言語法知識。

題解只寫自己理解的解法,其他解法不再增加。題目與解析均在代碼裏面。

0x01 難度等級

簡單

0x02 代碼

package 簡單;

import java.util.Scanner;

/*
*
*
*
描述
驗證尼科徹斯定理,即:任何一個整數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個連續奇數之和的形式輸出。
數據範圍:
1
≤
�
≤
100

1≤m≤100

輸入描述:
輸入一個int整數

輸出描述:
輸出分解後的string
*
示例1
輸入:
6
*
輸出:
m^3=m^a1+m*(m-1)  2與d(公差2約掉了)
6^3=31+33+35+37+39+41
*
* */
public class 尼科斯徹定理 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        double a1 = 0;
        double x = Math.pow(m, 2);//m^3=m^a1+m*(m-1)
        a1 = x - m + 1;//36-6+1   a1=m^2-m+1
        int b = 0;
        int[] arr = new int[m];
//        System.out.println(a1);
        for (int i = 0; i < m; i++) {
            b = (int) a1;//31
            b += 2 * i;//31
            arr[i] = b;//31
            if (i == m - 1) {//5
                System.out.print(arr[i]);//41就不打印“+號”
            } else {
                System.out.print(arr[i] + "+");
            }

        }
    }
}

 

0x03 算法思想

考查公差d爲2的等差數列的通項求和公式:m設爲項數,先計算處a1,再計算出每一項,一共只有m項。

m^3=m^a1+m*(m-1)

0x04 運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章