P1045代码如下
#include<bits/stdc++.h>
using namespace std;
int p;
struct nums {
int num[25010];
void __init__() {
memset(num, 0, sizeof(num));
}
void jw() {
for (int i = 1; i <= 500; i++) {
num[i + 1] += num[i] / 10;
num[i] %= 10;
}
for (int i = 501; i < 25010; i++) num[i] = 0;
num[0] = 0;
}
nums operator *(nums a) {
nums ans;
ans.__init__();
for (int i = 1; i <= 500; i++) for (int j = 1; j <= 500; j++) ans.num[i + j - 1] += num[i] * a.num[j];
ans.jw();
return ans;
}
nums operator *(int p) {
for (int i = 1; i <= 500; i++) this->num[i] *= p;
this->jw();
return *this;
}
friend ostream& operator <<(ostream&, const nums& a) {
for (int i = 500; i > 0; i--) {
cout << a.num[i];
if (i % 50 == 1) cout << "\n";
}
return cout;
}
} num;
nums make_nums(int n) {
nums a;
a.__init__();
a.num[1] = n;
a.jw();
return a;
}
nums quickly_pow(nums a, int p) {
if (p == 0) return make_nums(1);
if (p == 1) return a;
nums ans = quickly_pow(a, p / 2);
return (p % 2 ? ans * ans * a : ans * ans);
}
int main() {
cin >> p;
cout << (int)(p * 0.30102999566) + 1 << "\n";
num = quickly_pow(make_nums(2), p);
num.num[1]--;
cout << num;
return 0;
}
本地运行输入1024会异常退出
但是在洛谷在线IDE就可以正常使用
提交后也是AC
所以为什么本地会异常退出,在线IDE和评测机都可以正常运行