解题思路:


找左边界 例如 案例当中的m=13  m的立方 三个m相乘 相当于 m个m*m相加 答案说连续的奇数

 所以可以分成两种情况讨论 

奇数的情况是m*m就是答案的那串奇数的中心数 然后向左向右扩张共13-1个 减的是减去的中心数

偶数的情况就是 m*m就是答案中间两个数的平均 对称扩张12个

而且答案说了 是依次相邻的奇数 所以只需要找到最左边的那个奇数 然后循环m次  就可以得出结果 

注意事项:


m是奇数和偶数要分开讨论

如果循环 最后一个不要输出+号


参考代码:

#include <iostream>

using namespace std;

int main() {

int m = 0;

cin >> m;

int num = 0;

int a = 0;

int b = 0;

//奇数情况

if (m % 2 == 1) {

//中心数m*m前后的数有多少个

num = (m - 1) * 0.5;

//左边界数

a = m * m - num * 2;

//右边界数

b = m * m + num * 2;

//中心数

int c = m * m;

cout << m << "*" << m << "*" << m << "=" << m * m * m << "=";

//打印从左边界数到中心数 不包含中心数

for (int i = 0; i < m-1; i++) {

cout << a << "+";

a = a + 2;

}


cout << b;

}

if (m % 2 == 0) {

num = m * 0.5;

a = m * m - num * 2 + 1;

b = m * m + num * 2 - 1;

cout << m << "*" << m << "*" << m << "=" << m * m * m << "=";

for (int i = 0; i < m - 1; i++) {

cout << a << "+";

a = a + 2;

}

cout << b;

}


return 0;

}

偶数样例

/*12*12*12 1728

12*12=144

133 135 137 139 141 143 145 147 149 151 153 155

*/


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论