描述
验证尼科彻斯定理,即:任何一个整数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≤m≤100)
输入描述
输入一个int整数
输出描述
输出分解后的string
示例
输入:6
输出:31+33+35+37+39+41
方法1:常规思路,直接计算
C语言
#include <stdio.h> int main() { int m; scanf("%d",&m); if(m==1) { printf("1"); return 0; } int i=3; //用while来找m个奇数相加的第一个奇数 while (1) { int sum=0,count=0; //求m个奇数的和 for(int j=i;count!=m;j+=2) { sum+=j; count++; } //如果不满足条件,i的值为后一个奇数 if(sum!=m*m*m) i+=2; else break; } for(int j=0;j<m;j++) { if(j==m-1) printf("%d",i+2*j); else printf("%d+",i+2*j); } return 0; }
Java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int m=in.nextInt(); if(m==1) { System.out.printf("1"); return ; } int i=3; //用while来找m个奇数相加的第一个奇数 while (true) { int sum=0,count=0; for(int j=i;count!=m;j+=2) { sum+=j; count++; } //如果不满足条件,i的值为后一个奇数 if(sum!=m*m*m) i+=2; else break; } for(int j=0;j<m;j++) { if(j==m-1) System.out.printf("%d",i+2*j); else System.out.printf("%d+",i+2*j); } } }
C语言
#include <stdio.h> int main() { int m; scanf("%d",&m); int i=m*m-m+1; for(int j=0;j<m;j++) { if(j==m-1) printf("%d",i+2*j); else printf("%d+",i+2*j); } return 0; }
Java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int m=in.nextInt(); int i=m*m-m+1; for(int j=0;j<m;j++) { if(j==m-1) System.out.printf("%d",i+2*j); else System.out.printf("%d+",i+2*j); } } }