解题思路:
找左边界 例如 案例当中的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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复