题目描述
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入描述:
输入一个int整数
输出描述:
输出分解后的string
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
int n = scanner.nextInt();
StringBuffer sb = new StringBuffer();
int mid = n * n;
if (mid % 2 == 1)
{
int count = (n - 1) / 2;
for (int i = count; i >= 0; i--)
{
sb.append(mid - i * 2);
sb.append("+");
}
for (int i = 1; i < count; i++)
{
sb.append(mid + i * 2);
sb.append("+");
}
sb.append(mid + count * 2);
}
else
{
int count = n / 2;
for (int i = count - 1; i >= 0; i--)
{
sb.append(mid - i * 2 - 1);
sb.append("+");
}
for (int i = 0; i < count - 1; i++)
{
sb.append(mid + i * 2 + 1);
sb.append("+");
}
sb.append(mid + (count - 1) * 2 + 1);
}
System.out.println(String.valueOf(sb));
}
}
}
思路二:
第一个数为n * n - n + 1
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
int n = scanner.nextInt();
StringBuffer sb = new StringBuffer();
int num = n * n - n + 1;
for (int i = 0; i < n - 1; i++)
{
sb.append(num);
sb.append("+");
num += 2;
}
sb.append(num);
System.out.println(sb.toString());
}
}
}