static void Main1(string[] args) { string[] strarr ={"-865987453.36589" ,"73.23658" ,"0.98" ,"-0.000098784000" ,"-00000001120.0" ,"0" ,"-0.0" }; BigNum[] bnarr=new BigNum[strarr.Length]; for (int i = 0; i < strarr.Length; i++) { bnarr[i] = new BigNum(strarr[i]); } Level_1 l1 = new Level_1(); string str = l1.p1_damageBonuses(strarr[0], strarr[1]); Console.WriteLine(str); int[] cards={1,2,3,4,5}; int m = 0; int result = l1.p3_combo(cards, m); Console.Read(); }
//【强大的攻击值】 //游戏中的数值系数会随着等级或者装备的提升而不断增大,如果一开始没有规划好, //将会导致数值计算超出程序语言所能支持的最大精度而溢出;譬如一个高阶玩家的攻 //击数值是“865987453”,在战斗中触发了强力暴击,攻击系数提升73倍,那算起来 //就超过了32bit的数值精度;现在为了全面解决这类问题,程序员已经全部把计算接 //口做了改善增加了对大数据的支持;现在你需要简单地写段大数据乘法的代码去测试 //程序员的改动是否正确。 //=============================== //【参数】: 2个字符串参数(a,b)分别是两个用半角字符串表示的实数(只包括 // 正负号、小数点和数字,且题目保证单个参数的字符长度<=50); // 比如:参数为-865987453.36589,73.23658),代表将要乘的两个乘数 // 是-865987453.36589,73.23658; // //【返回】: 全精度计算结果(半角字符串,碰到小数位末尾有0请截去); // 上述例子中的参数将对应输出字符串:-63421959407.4272722562; public string p1_damageBonuses(string a, string b) { //请填入代码 BigNum l = new BigNum(a); BigNum r = new BigNum(b); BigNum result = l * r; return result.ToString(); }
public static BigNum operator *(BigNum a, BigNum b) { BigNum ret = new BigNum(); for (int i = 0; i < b._element.Count; i++) { if (b.GetElement(i) == 0) continue; for (int j = 0; j < a._element.Count; j++) { if (a.GetElement(j) == 0) continue; ret.SetElement(i + j, ret.GetElement(i + j) + a.GetElement(j) * b.GetElement(i)); } ret.Refine(); } ret._isNegtive = a._isNegtive ^ b._isNegtive; ret._dotPos = a._dotPos + b._dotPos; return ret; }