蓝桥杯刷题
洛谷P10425R格式
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n;
string a;
vector<int> mul(vector<int>&A, vector<int>&B){
	vector<int> C(A.size() + B.size(), 0);
	for(int i = 0; i < A.size(); i++){
		int t = 0;
		for(int j = 0; j < B.size(); j++){
			t += A[i] * B[j] + C[i + j];
			C[i + j] = t % 10;
			t /= 10; 
		}
		if(t)C[i + B.size()] += t;
	}
	while(C.size() > 1 && C.back() == 0)C.pop_back();
	return C;
}
int main() {
	cin >> n >> a;
	vector<int>A;
	int cnt = 0;
	for(int i = a.size() - 1; i >= 0; i--){
		if(a[i] != '.')A.push_back(a[i] - '0');
	}
	reverse(a.begin(), a.end());
	cnt = a.find('.');
	vector<int> B;
	B.push_back(2);
	while(n--){
		A = mul(A, B);
	}
	for(int i = A.size() - 1; i > cnt; i--)cout << A[i];
	if(A[cnt - 1] >= 5)cout << A[cnt] + 1;
	else cout << A[cnt];
	
	
	return 0;
}洛谷P8783统计子矩阵
#include <iostream>
using namespace std;
int n, m, k;
const int N = 505;
long long a[N][N], s[N][N], b[N];
long long ans;
int main() {
	cin >> n >> m >> k;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			cin >> a[i][j];
		}
	}
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= m; j++){
			s[i][j] = s[i - 1][j] + a[i][j];
		}
	}
	for(int u = 1; u <= n; u++){
		for(int d = u; d <= n; d++){
			for(int i = 1; i <= m; i++){
				b[i] = s[d][i] - s[u - 1][i];
			}
			int sum = 0;
			for(int i = 1, j = 1; j <= m; j++){
				sum += b[j];
				while(i <= j){
					if(sum > k){
						sum -= b[i];
						i++;
					}
					else{
						ans += j - i + 1;
						break;
					}
				}
			}
		}
	}
	cout << ans << endl;
	
	return 0;
}洛谷P8784积木画
#include <iostream>
using namespace std;
const int N = 1e7, mod = 1e9 + 7;
long long f[N];
int n;
int main() {
	cin >> n;
	f[0] = 1, f[1] = 1, f[2] = 2, f[3] = 5;
	for(int i = 4; i <= n; i++){
		f[i] = (2 * f[i - 1] + f[i - 3]) % mod;
	}
	cout << f[n] << endl;
	return 0;
}