'commit'
This commit is contained in:
46
TangDou/XiTi/1169.cpp
Normal file
46
TangDou/XiTi/1169.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// 棋盘覆盖问题原理
|
||||
// https://blog.csdn.net/m0_51005809/article/details/120112637
|
||||
|
||||
const int N = 1e5 + 10;
|
||||
int a[N], al;
|
||||
|
||||
void mul(int a[], int &al, int b) {
|
||||
int t = 0;
|
||||
for (int i = 1; i <= al; i++) {
|
||||
t += a[i] * b;
|
||||
a[i] = t % 10;
|
||||
t /= 10;
|
||||
}
|
||||
while (t) {
|
||||
a[++al] = t % 10;
|
||||
t /= 10;
|
||||
}
|
||||
while (al > 1 && !a[al]) al--;
|
||||
}
|
||||
|
||||
int r;
|
||||
void div(int a[], int &al, int b, int &r) {
|
||||
r = 0;
|
||||
for (int i = al; i >= 1; i--) {
|
||||
r = r * 10 + a[i];
|
||||
a[i] = r / b;
|
||||
r %= b;
|
||||
}
|
||||
while (al > 1 && !a[al]) al--;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int k;
|
||||
cin >> k;
|
||||
//通过高精度计算4^k
|
||||
a[1] = 1, al = 1;
|
||||
for (int i = 1; i <= k; i++) mul(a, al, 4);
|
||||
|
||||
div(a, al, 3, r);
|
||||
for (int i = al; i; i--) printf("%d", a[i]);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user