【问题描述】
每个立方数都是一个连续的奇数序列之和。编写一程序,输入一个整数(2 <= n <= 20),输出构成n的立方的最长连续奇数序列(即:起始奇数最小的序列)的最小奇数和序列长度。
【输入形式】
从控制台输入整数n(2 <= n <= 20)。
【输出形式】
在标准输出上输出最长连续奇数序列的最小奇数和序列长度,中间用一个空格分隔。
【样例说明】
输入的整数为4,其立方为64,构成64的连续奇数序列共有3个,分别是"1 3 5 7 9 11 13 15"、"13 15 17 19"和"31 33",第一个最长,其第一个奇数为1,长度为8,所以输出:1 8 |
【输入样例】
4
【输出样例】
1 8
注意要点(解题方法或易错区域):
1)注意读题,明晰题目意思;
2)第一个符合题目条件的数列一定是最长的,所以,只用找最开始的那个就可以了
3)注意,在循环中每次都要将sum和count的值清零,不然的话会被累加起来
#include<stdio.h>
#include<math.h>
int main()
{
int n;
int count=0;
int m;
int i=1;
int j=1;
int sum=0;
scanf("%d",&n);
m=pow(n,3);
for(i=1;i<m;i=i+2)
{
sum=0;
count=0;
for(j=i;j<m;j=j+2)
{
count++;
sum=sum+j;
if(sum>=m)
{
break;
}
}
if(sum==m)
{
break;
}
}
printf("%d %d",i,count);
return 0;
}