public string getAllKeys(int N, int M) { fraction[,] dp = new fraction[N + 2, M + 2]; int i, j; for (i = 0; i <= N + 1; i++) { for (j = 0; j <= M + 1; j++) { dp[i, j] = new fraction(1, 0); } } dp[0, 0] = new fraction(1, 1); for (i = 0; i < N; i++) { for (j = 0; j <= M; j++) { fraction ng = new fraction(N - i, 1); fraction ok = new fraction(N - i, N - i - 1); dp[i + 1, j] = dp[i + 1, j].add(dp[i, j].mul(ok)); dp[i + 1, j + 1] = dp[i + 1, j + 1].add(dp[i, j].mul(ng)); //Console.WriteLine(i + " " + j + " " + dp[i, j].bunsi + "/" + dp[i, j].bunbo); } } fraction ret = new fraction(1, 0); for (j = 0; j <= M; j++) ret = ret.add(dp[N, j]); string res = ret.bunsi + "/" + ret.bunbo; return res; }
private static void Fill_key_ALGEBRA_HARD_FRAC() { List <int> numerators = new List <int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List <int> denominators = new List <int>() { 2, 3, 4, 5, 6, 7, 8, 9 }; List <fraction> fractions = new List <fraction>(); switch (workspace.op.active_fractions_mode) { case Workspace.options.fractions.EQUAL_NUM: { int keys = workspace.keys.Count; int denominator = 1; int numerator = rand.Next(1, 6); int counter = 0; while (denominator < 9) { denominator = numerator + counter; fraction fr = new fraction() { numerator = numerator, denominator = denominator }; fractions.Add(fr); counter++; keys--; } for (int i = 0; i < workspace.keys.Count; i++) { fraction current_fraction = Get_AND_Remove_Random_Element <fraction>(fractions); workspace.keys[i].str = "Equal to "; workspace.keys[i].str += current_fraction.numerator.ToString(); workspace.keys[i].str += "/"; workspace.keys[i].str += current_fraction.denominator.ToString(); if (numerators.Count == 0 || fractions.Count == 0) { break; } } break; } case Workspace.options.fractions.EQUAL_DEN: { int keys = workspace.keys.Count; int denominator = rand.Next(workspace.keys.Count, workspace.keys.Count + 5); int numerator = 1; int counter = denominator - 1; while (numerator < denominator) { numerator = denominator - counter; fraction fr = new fraction() { numerator = numerator, denominator = denominator }; fractions.Add(fr); counter--; keys--; } for (int i = 0; i < workspace.keys.Count; i++) { fraction current_fraction = Get_AND_Remove_Random_Element <fraction>(fractions); workspace.keys[i].str = "Equal to "; workspace.keys[i].str += current_fraction.numerator.ToString(); workspace.keys[i].str += "/"; workspace.keys[i].str += current_fraction.denominator.ToString(); if (numerators.Count == 0 || fractions.Count == 0) { break; } } break; } } }
public fraction add(fraction a) { long waru = gcd(this.bunbo, a.bunbo); a.bunbo /= waru; this.bunbo /= waru; long nextbunbo = a.bunbo * this.bunbo * waru; long nextbunsi = a.bunbo * this.bunsi + this.bunbo * a.bunsi; return new fraction(nextbunbo, nextbunsi); }
public fraction mul(fraction a) { long nextbunbo = a.bunbo / gcd(a.bunbo, this.bunsi) * this.bunbo / gcd(this.bunbo, a.bunsi); long nextbunsi = this.bunsi / gcd(a.bunbo, this.bunsi) * a.bunsi / gcd(this.bunbo, a.bunsi); return new fraction(nextbunbo, nextbunsi); }
public void Assign(liveObjectStats inObj) { _liveCountMax = inObj.liveCountMax; _liveCount = inObj.liveCount; _stepCountMax = inObj.stepCountMax; _stepCount = inObj.stepCount; charFraction = inObj.charFraction; _turnInitiative = inObj.turnInitiative; _isInitiativeBuffed = inObj.isInitiativeBuffed; initiativeElector = inObj.initiativeElector; }