明天校赛,今天整理一下简单的模板
/*高精加,累加x到sum*/
int sum[1000], top = 1;
void get_sum1(ll x){
int i, t = 0;//t记进位
for(i = 0; x != 0 || t != 0; i++){
sum[i] += x % 10 + t;
t = sum[i] / 10;
sum[i] %= 10;
x /= 10;
}
top = max(top, i);//最高位的位置,开区间
}
void print(){//个位在sum[0]
for(int i = top - 1; i >= 0; i--) cout << sum[i];
cout << endl;
}
/*高精乘,c = a * b,忽略正负号*/
int a[1000], b[1000], c[1000];
void mul(int *a, int *b){
for(int i = 1; i <= lena; i++){
int t = 0;//t记进位
for(int j = 1; j <= lenb; j++){
c[i + j - 1] = c[i + j - 1] + t + a[i] * b[j];
t = c[i + j - 1] / 10;
c[i + j - 1] %= 10;
}
c[i + lenb] = t;
}
}
void print(){//个位在c[1]
for(int i = lenc; i >= 1; i--) cout << c[i];
cout << endl;
}
/*快速幂, a的b次方*/
ll poww(int a, int b) {
ll ans = 1, base = a;
while (b != 0) {
if (b & 1 != 0) ans *= base;
base *= base;
b >>= 1;
//ans %= Mod, base %= Mod;
}
return ans;
}