早教吧作业答案频道 -->其他-->
C++习题法师为了战胜妖魔,准备好了可以记为1,2,……,N的N类符咒字法师为了战胜妖魔,准备好了可以记为1,2,……,N的N类符咒字,每类符咒字有能量值p1,p2,.,pN.符咒字有足够多个,法师可以一次接
题目详情
C++习题 法师为了战胜妖魔,准备好了可以记为1,2,……,N的N类符咒字
法师为了战胜妖魔,准备好了可以记为1,2,……,N的N类符咒字,每类符咒字有能量值p1,p2,.,pN.符咒字有足够多个,法师可以一次接一次地扔出符咒字,连续K个符咒字就形成一个符咒词.符咒词有极强的打击妖魔的力量,但也有一些伤害法师自身的副作用.符咒词副作用计算方法是:设符咒词是X1,X2,……,Xk,对应的能量值是p1,p2,.,pk ,则副作用引起的伤害值是p1@p2@,.,@pk.这里@是一种特殊的求“最大公因”的计算,约定如下:计算p1@p2的值,应先转换p1和p2为两个二进制数,用这两个二进制数各位为系数构造系数只能为0或1的多项式,在模2计算条件下计算两个多项式的最大公因式,将最大公因式的系数提出再形成二进制数,此数的值就是原p1和p2的最大公因数.例如:p1=5,p2=6,转换为二进制数是101和110,各位做系数构造得到多项式x2+1(0x项可不写)和x2+x,x2+1=x2+2x+1=( x+1)2 (模2计算2x=0x),x2+x=x(x+1),因此最大公因式是x+1,提出系数形成二进制数是011,即数值3,这就是求得的最大公因数,即这时p1@p2=5@6=3.多个能量值做@计算可以用两个计算的结果再与下一个进行计算.你的任务是编写程序计算法师能够构造出多少个伤害值不超过给定数值的符咒词,对程序的输入是N,K,p1,p2,.,pk,各文字意义如前所述,还有D,d1,d2,.,dD,其中D是伤害值数目,d1,d2,.,dD,是预先给定的不应超过的伤害值.程序的输出是对应伤害值的D个整数,是法师能够构造出具有不超过对应伤害值的符咒词的数目.你的程序应该允许1≤N≤50000,1≤K≤5000.两个样例如下:(1) 输入2,2,1,2,2,1,2,则应输出3,4.因为这时N=2,K=2,p1=1,p2=2,共可以形成符咒词4个:11,12,21,22,前3个求伤害值做@计算得到最大公因数都是1,第4个是2,故应输出3,4.(2) 输入5,2,1,2,3,4,5,5,1,2,3,4,5,应输出17,20,23,24,25.这时是5类符咒字共可形成25个符咒词,“最大公因数”计算结果,为1有17个,为2和3的各3个,为4和5的各1个.
下面的小程序可以完成多项式普通除法,输入nu次多项式各项系数从高到低存于数组u[nu],u[nu-1],…,u[0],nv次多项式各项系数从高到低存于数组v[nv],v[nv-1],…,nv[0],输出是求得多项式除法u/v的商和余式,商是nq次多项式各项系数从高到低存于数组q[nq],q[nq-1],…,q[0],余式是nr次多项式各项系数从高到低存于数组r[nr],r[nr-1],…,q[0]:
void div(int u[],int nu,int v[],int nv,int q[],int &nq,int r[],int &nr)
{ int i,j,k;
for(k=nu-nv;k>=0;k--)
for(j=nv+k-1;j>=k;j--){q[k]=u[nv+k]/v[nv];u[j]=u[j]-q[k]*v[j-k];}
nq=nu-nv;nr=nu-nv-1; for(i=nr;i>=0;i--) r[i]=u[i];
}
此程序容易修改为求系数为二进制数的多项式除法程序,再修改求两整数最大公因数的Euclid算法来解决本题要求的求最大公因式的计算.
请编写程序 最好加上注释行
法师为了战胜妖魔,准备好了可以记为1,2,……,N的N类符咒字,每类符咒字有能量值p1,p2,.,pN.符咒字有足够多个,法师可以一次接一次地扔出符咒字,连续K个符咒字就形成一个符咒词.符咒词有极强的打击妖魔的力量,但也有一些伤害法师自身的副作用.符咒词副作用计算方法是:设符咒词是X1,X2,……,Xk,对应的能量值是p1,p2,.,pk ,则副作用引起的伤害值是p1@p2@,.,@pk.这里@是一种特殊的求“最大公因”的计算,约定如下:计算p1@p2的值,应先转换p1和p2为两个二进制数,用这两个二进制数各位为系数构造系数只能为0或1的多项式,在模2计算条件下计算两个多项式的最大公因式,将最大公因式的系数提出再形成二进制数,此数的值就是原p1和p2的最大公因数.例如:p1=5,p2=6,转换为二进制数是101和110,各位做系数构造得到多项式x2+1(0x项可不写)和x2+x,x2+1=x2+2x+1=( x+1)2 (模2计算2x=0x),x2+x=x(x+1),因此最大公因式是x+1,提出系数形成二进制数是011,即数值3,这就是求得的最大公因数,即这时p1@p2=5@6=3.多个能量值做@计算可以用两个计算的结果再与下一个进行计算.你的任务是编写程序计算法师能够构造出多少个伤害值不超过给定数值的符咒词,对程序的输入是N,K,p1,p2,.,pk,各文字意义如前所述,还有D,d1,d2,.,dD,其中D是伤害值数目,d1,d2,.,dD,是预先给定的不应超过的伤害值.程序的输出是对应伤害值的D个整数,是法师能够构造出具有不超过对应伤害值的符咒词的数目.你的程序应该允许1≤N≤50000,1≤K≤5000.两个样例如下:(1) 输入2,2,1,2,2,1,2,则应输出3,4.因为这时N=2,K=2,p1=1,p2=2,共可以形成符咒词4个:11,12,21,22,前3个求伤害值做@计算得到最大公因数都是1,第4个是2,故应输出3,4.(2) 输入5,2,1,2,3,4,5,5,1,2,3,4,5,应输出17,20,23,24,25.这时是5类符咒字共可形成25个符咒词,“最大公因数”计算结果,为1有17个,为2和3的各3个,为4和5的各1个.
下面的小程序可以完成多项式普通除法,输入nu次多项式各项系数从高到低存于数组u[nu],u[nu-1],…,u[0],nv次多项式各项系数从高到低存于数组v[nv],v[nv-1],…,nv[0],输出是求得多项式除法u/v的商和余式,商是nq次多项式各项系数从高到低存于数组q[nq],q[nq-1],…,q[0],余式是nr次多项式各项系数从高到低存于数组r[nr],r[nr-1],…,q[0]:
void div(int u[],int nu,int v[],int nv,int q[],int &nq,int r[],int &nr)
{ int i,j,k;
for(k=nu-nv;k>=0;k--)
for(j=nv+k-1;j>=k;j--){q[k]=u[nv+k]/v[nv];u[j]=u[j]-q[k]*v[j-k];}
nq=nu-nv;nr=nu-nv-1; for(i=nr;i>=0;i--) r[i]=u[i];
}
此程序容易修改为求系数为二进制数的多项式除法程序,再修改求两整数最大公因数的Euclid算法来解决本题要求的求最大公因式的计算.
请编写程序 最好加上注释行
▼优质解答
答案和解析
说了半天废话,结果是问怎么求公因数是吧.
如果是公因数的话,两数得分别从2除起,如果能除,记录并修改被除数为结果,这样继续下去.
a=45;
List i记录_a=new List();
for(int i=2;i
如果是公因数的话,两数得分别从2除起,如果能除,记录并修改被除数为结果,这样继续下去.
a=45;
List i记录_a=new List();
for(int i=2;i
看了 C++习题法师为了战胜妖魔,...的网友还看了以下:
用“√”标出带点字的准确读音.气魄(pòpù)纯正(chúnshún)歼灭(qiānjiān)河堤 2020-06-10 …
4.sadadj.→n.悲伤;悲痛→(比较级)→(最高级)5.preparev.→n.准备;准备工 2020-06-21 …
阅读下面的文字,完成后面小题。(9分)屈指春秋,已近三千年。三千年间,沧海桑田,一切都在改变。春秋 2020-06-23 …
汉字有形有意。“德”字最初的字形,是十字路口中间有一只眼睛,瞄准了前进的方向(见右图)意为用眼睛找 2020-06-28 …
求正则表达式,要求:能够匹配N任意汉字,不匹配N.N任意汉字和N.N.N汉字(N为一个或多个数字) 2020-07-23 …
综合性学习(10分)汉字,是世界上最美丽且充满生命力的文字。为了使同学们进一步了解汉字,写好汉字,班 2020-11-15 …
小明发现自己的手表比家里的闹钟每小时快3分,而闹钟又比标准时间每小时慢3分.早上8时,将手表和闹钟都 2020-11-29 …
4.sadadj.→n.悲伤;悲痛→(比较级)→(最高级)5.preparev.→n.准备;准备工作 2020-12-06 …
比较甲乙两段文字,从表达技巧的角度点评它们的不同。要求:语言表达准确、简明、连贯,不超过50字。甲: 2020-12-10 …
[构词串记]1.invite(v.)—(n.)邀请;请柬2.prepare(v.)—(n.)准备;准 2020-12-21 …