2个点对了,其他tle,求优化
#include<bits/stdc++.h>
using namespace std;
const int N = 1000000;
int a[N],b[N],c[N];
string times(string A, string B) {
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
for (int i = 0; i < A.size(); i++)a[i] = A[i] - '0';
for (int i = 0; i < B.size(); i++)b[i] = B[i] - '0';
for (int i = 0; i < A.size(); i++) {
for (int j = 0; j < B.size(); j++) {
c[i + j] += a[i] * b[j];
}
}
int t = 0;
for (int i = 0; i < A.size() + B.size() + 10; i++) {
t = c[i] / 10;
c[i] %= 10;
c[i + 1] += t;
//cout << c[i] << " ";
}
int f = 0;
string C = "";
for (int i = A.size() + B.size() + 10; i >= 0; i--) {
if (c[i] == 0 && f == 0)continue;
else {
f = 1;
C = C + char(c[i] + '0');
}
}
return C;
}
string jian(string a){//a-1
int n=a.size();
//a[n-1]=char((a[n-1]-'0')-1);
char c=a[n-1];
int cc=c-'0';
cc-=1;
c=char(cc+'0');
a[n-1]=c;
return a;
}
string pp(int a,int b){
string k="1";
for (int i=0;i<b;i++){
k=times("2",k);
//cout << k <<endl;
}
return k;
}
int main() {
int p=1279;
cin >> p;
string ans=pp(2,p);
//cout << ans<<endl;
ans=jian(ans);
int m=ans.size();
cout <<m<<endl;
string z="";
if (m>500){
for (int i=m-500;i<m;i++){
z=z+ans[i];
}
for (int i=0;i<10;i++){
for (int j=i*50;j<i*50+50;j++)cout <<z[j];
cout<<endl;
}
}
else {
int r=500-m;
z=ans;
for (int i=0;i<r;i++)z="0"+z;
for (int i=0;i<10;i++){
for (int j=i*50;j<i*50+50;j++)cout <<z[j];
cout<<endl;
}
}
return 0;
}