华为机试HJ76:尼科彻斯定理

简介: 华为机试HJ76:尼科彻斯定理

题目描述:

验证尼科彻斯定理,即:任何一个整数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个连续奇数之和的形式输出。

本题含有多组输入数据。

输入描述:

输入一个int整数

输出描述:

输出分解后的string

示例:

输入:

6



输出:

31+33+35+37+39+41


解题思路:

本题是个数学问题,找规律。2的立方相当于第2个奇数和第3个奇数相加,3的立方相当于第4个奇数+第5个奇数+第6个奇数,那么N的立方等于N个奇数相加,开头的奇数是从哪个开始呢?1的立方有1个加项,2的立方有2个加项,3的立方有3个加项,则4的立方其开头的奇数是从1开始6(1+2+3)个奇数后的下一个奇数。


设计算法,假设输入num值,先计算前num-1项的加项有多少个,则根据序列求和公式sum=(num-1)*(num-1+1)/2,即前num-1项加项共有sum个;而num立方的第一个奇数是2*sum+1;写个循环从第一个奇数开始循环num次完成,前num-1次后面带个+字符。


测试代码:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int num;
    while(cin>>num)
    {
        int sum=num*(num-1)/2;
        vector<int> result;
        for(int k=0;k<num;++k)
        {
            if(k!=num-1)
            {
                cout<<2*(sum+k)+1<<"+";
            }
            else{
                cout<<2*(sum+k)+1<<endl;
            }
        }
    }
    return 0;
}


相关文章
|
6月前
NYOJ-757-期末考试
NYOJ-757-期末考试
24 0
|
6月前
|
C语言
每天一道C语言编程练习(5):尼科彻斯定理
每天一道C语言编程练习(5):尼科彻斯定理
50 0
|
6月前
|
存储
每日一题啦(● ̄(エ) ̄●)(尼克切斯定理,等差数列)
每日一题啦(● ̄(エ) ̄●)(尼克切斯定理,等差数列)
30 0
|
测试技术
华为机试HJ77:火车进站
华为机试HJ77:火车进站
127 1
华为机试HJ72:百钱买百鸡问题
华为机试HJ72:百钱买百鸡问题
114 0
|
机器学习/深度学习 算法 数据安全/隐私保护
华为机试HJ28:素数伴侣
华为机试HJ28:素数伴侣
103 0
|
测试技术
华为机试HJ24:合唱队
华为机试HJ24:合唱队
100 0
HJ76--尼科彻斯定理
HJ76--尼科彻斯定理
108 0
尼科彻斯定理
1.题目概述 2.题解 思路分析 具体实现
103 0
三道华为机试题
三道华为机试题
65 0