YTU.2573: 连续奇数和

来源:互联网 发布:贝茨训练软件 编辑:程序博客网 时间:2024/06/08 17:44

2573: 连续奇数和

时间限制: 1 Sec  内存限制: 128 MB
提交: 97  解决: 53
[提交][状态][讨论版]

题目描述

 小明看到一本书上写着:任何数字的立方都可以表示为连续奇数的和。

    比如:

2^3 = 8 = 3 + 5

3^3 = 27 = 7 + 9 + 11

虽然他没有想出怎么证明,但他想通过计算机进行验证。

所以聪明的你快来帮小明证明吧,你的工作就是要找出任何数字的立方的连续奇数之和的表示,如上式所示。

输入

多组数据输入,第一行输入一个数T,接下来有T行。

每行输入一个数n,表示你要计算立方的数字。

输出

输出对应n的立方之连续奇数和表示法的序列。

样例输入

223

样例输出

3 57 9 11

提示

如果对应一个n有多个表示方案,选择起始数字小的方案。

来源

2013蓝桥杯本科B组C-C++决赛题

AC代码:

#include <stdio.h>#include <stdlib.h>int main(){    int n;    scanf("%d",&n);    int a[n];    int i;    for(i=0;i<n;i++)    {        scanf("%d",&a[i]);        int m,sum;        m=a[i]*a[i]-a[i]+1;        printf("%d",m);        sum=m;        int s=a[i]*a[i]*a[i];        while(sum<s)            {                m=m+2;                printf(" %d",m);                sum=sum+m;            }            printf("\n");    }    return 0;}
这道题的关键是找到第一个奇数,由于是连续的,其他的给第一个加上2即可。

要多注意格式问题,巧妙运用("%d ")和(" %d").