萌新20分,大佬救命~
查看原帖
萌新20分,大佬救命~
686979
zhb121385楼主2022/6/21 20:11
#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int a[50];//幂数
int b[50];//和
int c[50];//加数
int d[100][100];//要计算的数据
void pow2() {
	int h;
	for (int i = 0; i < 50; i++) {
		a[i] *= 2;
		}
	for (int i = 0; i < 49; i++) {
		h = a[i] / 10;
		a[i] %= 10;
		a[i + 1] += h;
	}
}
void add2() {
	int h = 0;
	for (int i = 0; i < 49; i++) {
		b[i] += c[i];
		h = b[i] / 10;
		b[i] %= 10;
		b[i + 1] += h;
	}
}
void addend2(int k) {
	memset(c, 0, sizeof(c));
	for (int i = 0; i < 50; i++) {
		c[i] = a[i];
	}
	int h = 0;
	for (int i = 0; i < 49; i++) {
		c[i] *= k;
	}
	for (int i = 0; i < 49; i++) {
		h = c[i] / 10;
		c[i] %= 10;
		c[i + 1] += h;
	}
}
int main() {
	a[0] = 1;
	int n,m;
	int p, q;
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> d[i][j];
		}
	}
	for (int i = 0; i < n; i++) {
		p = 0, q = m - 1;
		memset(a, 0, sizeof(a));
		a[0] = 1;//进行初始化
		for (int j = 0; j < m; j++) {
			pow2();
			int k = 0;
			if (d[i][p] <= d[i][q]) {
				k = d[i][p];
				p++;
			}
			else {
				k = d[i][q];
				q--;
			}
			addend2(k);
			add2();
		}
	}
	int w=0;
	for (int i = 49; i >= 0; i--) {
		if (b[i] != 0) {
			w = i;
			break;
		}
	}
	for (int i = w; i >= 0; i--) {
		cout << b[i];
	}
	return 0;
}

大佬救命,案列过不了

2022/6/21 20:11
加载中...