一道数学计算题,求解
已知有N个数,它们的和为sum,希望新增一个数x,并使用x的得分为y。
数值x与其得分y之间的关系如下:
1. 基准比较值 B = (sum+x)/(N+1) * (1-a) ;
2. y = (x/B)的m次方 *100 (当x<B时)
3. y = (B/x)的n次方 *100 (当x>=B时)
4.其中a、m、n都为常量(a介于0%-100%之间),所有的值都只考虑正数
计算函数格式如下:
float calc_x(int N,float sum,float a ,float m , float n, float y)
此函数如何实现,因为可能同时存在多个x值,如何解出所有的x呢。
[解决办法]
当x<B时
=> x-B<0
=> x - (sum+x)/(N+1)*(1-a) < 0
=> x < sum..N..a 组合,记为 XXXX
vector<int> calc_x(...) {
vector<int> result;
用 y = (x/B)^m*100 求x
x = y..sum..N..a..m 组合
if(x<XXXX) {
result.push_back(x);
}
用 y = (B/x)^n*100 求x
x = y..sum..N..a..n 组合
if(x>=XXXX) {
result.push_back(x);
}
return result;
}