我有一个多项式,系数存储为数组。
int n,k,t,s[20000];
int l(int x,int y)
{
int i,m=0;
if(x==0)return 1;
for(i=0;i<t;i++)
if(s[i]!=0&&i<=y)
{
int u=l(x-1,y-i);
int o=u*s[i]%42043;
m+=o;
if(x==n&&k==y)printf("%d ",o);
}
return m%42043;
}
我的问题是此代码太慢。 我想做的是如果我有多项式C 系数为0 1 1 0 1 2 1 C将是
x^5+x^4+x^2+2*x+1
然后我计算它的k次幂,将是
x^10+2*x^9+x^8+2*x^7+6*x^6+6*x^5+3*x^4+4*x^3+6*x^2+4*x+1
然后我得到X的所有幂的所有系数都小于n,在这种情况下为6。因此,我得到
6+6+3+4+6+4+1 = 30
有O(log n)方法吗?