参考代码:
/** * 尼科彻斯定理:任何一个整数m的立方都可以写成m个连续奇数之和 * 示例:13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181 * * 思路:连续的奇数就是公差为2的等差数列(来自:https://blog.dotcpp.com/a/90159) * * 假设x是首项,则m个连续奇数可表示如下(等差数列的前n项之和:Sn = 首项*项数 + 项数*(项数-1)/2*公差) * |————————————————————————————————————————————————————————————————————| * |第1项 x+0 前1项之和 x*1+0 | * |第2项 x+2 前2项之和 x*2+0+2 | * |第3项 x+4 前3项之和 x*3+0+2+4 | * |第4项 x+6 前4项之和 x*4+0+2+4+6 | * |第5项 x+8 前5项之和 x*5+0+2+4+6+8 | * |第m项 x+(m-1)*2 前m项之和 x*m+m*(m-1) | * * 由尼科彻斯定理知道,等差数列的前n项之和=项数的立方 * 也就是 m*m*m = x*m + m*(m-1) => x = m*m - m + 1 */ #include <stdio.h> #include <math.h> int InputNum() { int m; scanf("%d", &m); return m; } void Process(int m) { printf("%d*%d*%d=%.f=", m, m, m, pow(m, 3)); int x = m * m - m + 1; for (int i = 0; i < m; i++) { printf("%d", x); x = x + 2; if (i != m - 1) { printf("+"); } } } int main() { int m = InputNum(); Process(m); return 0; }
0.0分
0 人评分
兰顿蚂蚁 (C++代码)浏览:1159 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:633 |
用筛法求之N内的素数。 (C语言代码)浏览:890 |
C语言训练-自由落体问题 (C语言代码)浏览:650 |
母牛的故事 (C语言代码)浏览:739 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:438 |
C二级辅导-公约公倍 (C语言代码)浏览:537 |
剪刀石头布 (C语言代码)浏览:1519 |
C语言训练-8除不尽的数 (C语言代码)浏览:1469 |
数列有序 (C语言代码)浏览:974 |