关于JOJ 2042的启发——一种写程序计算幂函数的方法

JOJ 2042是一个程序理解题,其中给出了一段奇妙的计算x^3的程序。它的原理如下:

关于JOJ 2042的启发——一种写程序计算幂函数的方法_第1张图片

由上可知,幂函数的增加量第次加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

所以下面这个程序可以计算输入的正整数的平方:

#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),理论上应该都可以计算。

 

你可能感兴趣的:(c)