20分求优化
查看原帖
20分求优化
1271572
Moxiang_Terry楼主2025/6/22 10:08

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;
}
2025/6/22 10:08
加载中...