1、多元高次方程问题,学号:100320093姓名: 康年锦,问题描述:,N元高次方程: k1x1p1+k2x2p2+k3x3p3+knxnpn=0 其中: x1, x2,.,xn 是未知数, k1,k2,.,kn 是系数, p1,p2,.pn 是指数。,题目简化的规定:,A,方程中所有数都为整数,指数pi均为正整数; B,1 = xi = M(i=1n);C,1 = n = 6; D,1 = M = 150; E,|k1x1p1|+|k2x2p2|+|k3x3p3|+|knxnpn|231 ;,试验任务:,现在,给你M、ki、pi的值,请你求出该方程共有多少组整数解。题目保证解的数量小于231。
2、,数据输入输出:,输入: 第1行包含 一个整数 n;第 2行包含一个整数 M;第 3行到第 n+2行,每行包含两个整数,分别表示ki和pi,以空格隔开。第3行的数据对应i=1,第n+2行的数据对应i=n.输出: 一个整数,表示方程的整数解的数量。,输入输出示例:,输入示例 输出示例 3 178 150 1 2 -1 2 1 2,解题大致思路:,使等式左右两边相等的便是该方程的解,由于该题已经简化过,根据简化的条件,判断可以采用逐个枚举的方法进行求解该题。 不过按照一般的枚举,复杂度是O(Mn),故采用以下方法: 将方程的n个变量平分到等式的两边,然后对方程的左边进行枚举,并将枚举的结果保存在一维数组中,然后对右边进行枚举,把枚举的值在数组中进行查找,若找到该值,则证明找到一个解。此时的复杂度为O(Mn/2),算法具体实现步骤:,1,首先把方程的一半变量移动到方程的另一边,对前n/2个变量进行枚举,并将计算结果保存在一维数组中;2,对步骤1中的数组进行排序,并且统计相同值的个数且保存下来,目的是进行二分查找,提高效率;3,对移到方程右边的变量进行枚举,并在之前排序过的数组里进行二分查找,若找到该值,则加上该值所对应的个数。,谢谢!,