A

#include <iostream>
#include <cmath>
using namespace std;

int main() {
	long long n, k, sum = 0;
	cin >> n >> k;
	for(int i = 1; i <= n; i++) {
		string s;
		cin >> s;
		long long num = 0;
		for(int j = s.size() - 1; j >= 0; j--) {
			if(s[j] >= '0' && s[j] <= '9') num += (s[j] - '0') * pow(k, s.size() - j - 1);
			else num += (s[j] - 'A' + 10) * pow(k, s.size() - j - 1);
		}
		sum += num; 
	}
	string ans;
	while(sum != 0) {
		if(sum % k >= 10) ans = ans + char('A' + sum % k - 10);
		else ans = ans + char(sum % k + '0');
		sum /= k;
	}
	for(int i = ans.size() - 1; i >= 0; i--) cout << ans[i];
	return 0;
}

B

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
	double a, b, c, d;
	cin >> a >> b >> c >> d;
	cout << fixed << setprecision(3) << b + (d - b) / (a + c) * a << endl;
	return 0;
}

C

#include <iostream>
#include <algorithm>
using namespace std;

const int mod = 1e9 + 7;
int a[500005], b[500005], s[500005];

int main() {
	int n, m, sum = 0;
	cin >> n >> m;
	for(int i = 1; i <= n; i++) cin >> a[i];
	sort(a + 1, a + n + 1);
	for(int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i];
	for(int i = 1; i <= m; i++) {
		cin >> b[i];
		int pos = upper_bound(a + 1, a + n + 1, b[i]) - a - 1;
		sum = (sum + pos * b[i] + s[n] - s[pos]) % mod;
	}
	cout << sum << endl;
	return 0;
}

D

#include <iostream>
using namespace std;

const int mod = 1e9 + 7;
string s;
int p, f[1000005][105];

int main() {
	cin >> s >> p;
	f[0][0] = 1;
	for(int i = 0; i < s.size(); i++) {
		if(s[i] == '?') {
			for(int j = 0; j < p; j++) {
				for(int k = 0; k <= 9; k++) f[i + 1][(j * 10 + k) % p] += f[i][j];
			}
		}
		else {
			for(int j = 0; j < p; j++) f[i + 1][(j * 10 + s[i] - '0') % p] += f[i][j];
		}
		for(int j = 0; j < p; j++) f[i + 1][j] %= mod;
	}
	cout << f[s.size()][0] << endl;
	return 0;
}

E

#include <iostream>
using namespace std;

int board[6005][6005];

int main() {
	int n;
	cin >> n;
	board[1][1] = 1;
	for(int i = 2; i <= 6000; i++) {
		board[i][1] = board[i][i] = 1;
		for(int j = 2; j < i; j++) {
			board[i][j] = (board[i - 1][j] + board[i - 1][j - 1]) % 2;
		}
	}
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= n - i; j++) cout << ' ';
		cout << 'x';
		for(int j = 2; j <= i; j++) {
			cout << ' ';
			if(board[i][j]) cout << 'x';
			else cout << ' ';
		}
		cout << endl;
	}
	return 0;
}