#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string> using namespace std; void print(string a, int e) { if (e == 0) return; cout << a; if (e > 1) cout << "^" << e; } int main() { unsigned long long int C[51][51] = { 0 }; for (int i = 0; i <= 50; i++) { C[i][0] = 1; } for (int i = 1; i <= 50; i++) for (int j = 1; j <= i; j++) C[i][j] = C[i - 1][j - 1] + C[i - 1][j]; int cases; cin >> cases; string line; for (int cas = 1; cas <= cases; cas++) { cin >> line; // parse (a+b)^e int plusPos = line.find_first_of("+"); int parePos = line.find_first_of(")"); string a = line.substr(1, plusPos - 1); string b = line.substr(plusPos + 1, parePos - 1 - plusPos); int e = atoi(line.substr(parePos + 2).c_str()); cout << "Case " << cas << ": "; print(a, e); for (int i = 1; i < e; i++) { cout << "+"; if (C[e][i] > 0) cout << C[e][i]; cout << '*'; print(a, e - i); cout << '*'; print(b, i); } cout << "+"; print(b, e); cout << endl; } return 0; }
Friday, April 24, 2015
UVa 11955 - Binomial Theorem
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment