采用数学方法,巧妙运用循环,求解X的三次方的值
2015-05-12 16:36
393 查看
段奇妙的计算x^3的程序。它的原理如下:
由上可知,幂函数的增加量第次加6,其初始值为1.所以,就可以把程序写成这样来计算立方:
int f(x) {
int c = 0, d = 1, e = 6;
while(x--) {
c += d;
d += e;
e += 6;
}
reutnrn c;
}
同理,根据这个思路,还可以写出计算平方的类似的程序:
例如代码如下:
x2-(x-1)2=2*x-1 , 平方函数的增加量,初始值为1
2*x-1 – [2*(x-1)-1]=2 ,平方函数增加量的增加量,是常数2
所以下面这个程序可以计算输入的正整数的平方:
关于此有因式分解公式:an-bn=(a-b)(an-1+an-2b+…+abn-2+bn-1),理论上应该都可以计算。
由上可知,幂函数的增加量第次加6,其初始值为1.所以,就可以把程序写成这样来计算立方:
int f(x) {
int c = 0, d = 1, e = 6;
while(x--) {
c += d;
d += e;
e += 6;
}
reutnrn c;
}
同理,根据这个思路,还可以写出计算平方的类似的程序:
例如代码如下:
public class Main { public static void main(String[] args) { int x = 5, c = 0, d = 1, e = 6; while(x-->0){ c += d; d += e; e += 6; } System.out.println(c); } }
x2-(x-1)2=2*x-1 , 平方函数的增加量,初始值为1
2*x-1 – [2*(x-1)-1]=2 ,平方函数增加量的增加量,是常数2
所以下面这个程序可以计算输入的正整数的平方:
#include <stdio.h> int f(int x) { int c = 0, d = 1; while(x--) { c += d; d += 2; } return c; } int main() { int n; while(scanf("%d", &n), n) { printf("%d/n", f(n)); } return 0; }
关于此有因式分解公式:an-bn=(a-b)(an-1+an-2b+…+abn-2+bn-1),理论上应该都可以计算。
相关文章推荐
- ZOJ1016 题解此题一开始想用模拟算法结果调试了很久也没做出来,之后在网上看到这种方法很巧妙,果断采用。
- Codewars 打怪日记 5星级kyu 数独游戏 我是否完成了数组 Did I Finish my Sudoku? 看小菜和大神循环的巧妙运用
- 卷积的循环矩阵求解方法
- 《算法竞赛入门经典》第十章 数学概念与方法 UVa11582(幂取模,循环规律,模算术)
- 【数学,方差运用,暴力求解】hdu-5037 Galaxy (2014鞍山现场)
- 浅谈python for循环的巧妙运用(迭代、列表生成式)
- !采用递归和非递归方法求解F(n)
- Java采用循环链表结构求解约瑟夫问题
- AngularJS中run方法的巧妙运用
- 数学建模专栏 | 第七篇:MATLAB连续模型求解方法
- 把p个对象排成k个非空循环排列的方法数 组合数学-第一类stirling数
- 求解约瑟夫问题(Joseph Problem)的数学方法 from 御剑晨风
- 如何采用设置标志的方法来区分循环队列的满和空
- 要求顺序循环队不损失一个空间,全部能够得到有效利用,试采用设置标志位tag的方法解决“假溢出”问题,实现顺序循环队列算法
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- algo3-4-3.c 利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径)
- 采用递归和非递归方法求解汉诺塔问题
- Angular的run方法巧妙运用
- 循环中调用DAO时解决方案。(数据量比较大时应该采用的方法。)