首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一路数学计算题,求解

2013-04-26 
一道数学计算题,求解已知有N个数,它们的和为sum,希望新增一个数x,并使用x的得分为y。数值x与其得分y之间的

一道数学计算题,求解
已知有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呢。
[解决办法]

引用:
没看出有什么难度,不就是2种情况么:(x<b 或者m>=b)
分两种情况,解一个二元一次方程求出x和b,看是否满足条件,不就完了?

哦,不一定是一次,还有可能是二次,,也就是个解一个二元一次方程和一个二元二次方程而已
[解决办法]
当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;
}

热点排行