2012-06-03 27 views
0

我解决上SPOJ计算P 1中n + q^n的P + Q和PQ

this问题

我们来计算((P^N)+(Q^N)),我们给定 P + Q和P * Q。
输入: 第一行包含表示的测试用例 三个整数P + Q,P * Q和n将给出对于每个测试实例中一个单独的行 对于每个测试的数量的整数T(< = 15)情况下输出对应的 输出功率(p^N)+(q^N)在一个单独的线

在一段时间之后我想出了这个复发

p^n + q^n = (p^n-1 + q^n-1)(p+q) - pq(p^n-2 + q^n-2) 
and in my code i have 
a = p + q and b = p.q 

这是我的溶液

public Long computeExponential(int n) 
    { 
    //base cases 
    if(n == 0) 
    { 
     return 1L; 
    } 
    else if(n == 1) 
    { 
     return new Long(a); 
    } 
    else 
    { 
     return (a * computeExponential(n-1) - b * computeExponential(n-2)); 
    } 

,我与给定的测试用例得到的答案是

2125764 
4383653 
-3 
175099 
28160 

是我有错导出公式?

回答

1

不,你的派生方程是点亮的。在您的实施中,我只能看到一个错误:

如果n=0,p^0 + q^0 = 1 + 1 = 2。您的computeExponentialn=0返回1

为了将来的参考,对于复杂的算法,尤其是对于编写我自己的测试用例,特别是对于基本情况,简单情况和异常值,我手动计算结果以及然后运行这些首先检查我的功能正在做我认为应该做的。例如,用n = 0,p = 2,q = 3(例如p + q = 5,pq = 6)测试你的方法会很快引起这个错误。只有当它通过我自己的测试用例时,我才会将其提交给其他测试数据,这些测试数据可能会或可能不会对我有任何意义。

+0

感谢您的帮助。这确实是我犯的错误。 感谢您的时间和建议。 – nikhil

相关问题