#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