WA on #3
查看原帖
WA on #3
643818
I_AK_CTS楼主2024/7/8 20:09
#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
struct node {
	int c2, c5;
	string ANS;
} a[N][N];
int n;
int C2[N][N], C5[N][N];
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)
    	for (int j = 1; j <= n; j++) {
    		int x;
    		cin >> x;
    		while (x % 2 == 0) {
    			a[i][j].c2++;
    			x /= 2;
			}
			while (x % 5 == 0) {
    			a[i][j].c5++;
    			x /= 5;
			}
		}
	a[1][1].ANS = "";
	for (int i = 2; i <= n; i++) {
		C2[1][i] = C2[1][i - 1] + a[1][i].c2;
		C5[1][i] = C5[1][i - 1] + a[1][i].c5;
		a[1][i].ANS = a[1][i - 1].ANS + 'R';
	}
	for (int i = 2; i <= n; i++) {
		C2[i][1] = C2[i - 1][1] + a[i][1].c2;
		C5[i][1] = C5[i - 1][1] + a[i][1].c5;
		a[i][1].ANS = a[i - 1][1].ANS + 'D';
	}
	for (int i = 2; i <= n; i++)
		for (int j = 2; j <= n; j++) {
			int x = min(C2[i - 1][j] + a[i][j].c2, C5[i - 1][j] + a[i][j].c5);
			int y = min(C2[i][j - 1] + a[i][j].c2, C5[i][j - 1] + a[i][j].c5);
			if (x < y) {
				C2[i][j] = C2[i - 1][j] + a[i][j].c2;
				C5[i][j] = C5[i - 1][j] + a[i][j].c5;
				a[i][j].ANS = a[i - 1][j].ANS + 'D';
			} else {
				C2[i][j] = C2[i][j - 1] + a[i][j].c2;
				C5[i][j] = C5[i][j - 1] + a[i][j].c5;
				a[i][j].ANS = a[i][j - 1].ANS + 'R';
			}
		}
	cout << min(C2[n][n], C5[n][n]) << endl << a[n][n].ANS << endl;
    return 0;
}
2024/7/8 20:09
加载中...