Sunteți pe pagina 1din 3

#include <bits/stdc++.

h>
#define loop(i,a,b) for(ll i=a;i<=b;i++)
#define mod 1000000007
#define F first
#define S second
#define mp make_pair
#define pb push_back
#define fast_io std::ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
typedef long long int ll;
using namespace std;

int arr[1000+7][1000+7];
int dp[1000+7][1000+7][2];

int number_of_zeros(ll n)
{
int c=0;
if(n==0)return 0;
while((n/10)*10==n)
{
n=n/10;
c++;
}
return c;
}

int number_of_two(ll n)
{
int c=0;
if(n==0)return 0;
while((n/2)*2==n)
{
n=n/2;
c++;
}
return c;
}

int number_of_five(ll n)
{
int c=0;
if(n==0)return 0;
while((n/5)*5==n)
{
n=n/5;
c++;
}
return c;
}

int main()
{
ll n;
cin>>n;
// 0 for 2 , 1 for 5
//cout<<number_of_two(n)<<endl<<number_of_five(n);
int x_zero=-1;
int y_zero=-1;
string str1="";
string str="";

for(int i=0;i<1000+7;i++)
{
dp[i][0][0]=dp[0][i][1]=dp[i][0][1]=dp[0][i][0]=INT_MAX;
}

for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){


cin>>arr[i][j];
if(arr[i][j]==0)
{
x_zero=i;
y_zero=j;
}
}

if(x_zero!=-1)
{
int i=1;
int j=1;
while(j<y_zero)
{str1+='R';j++;}
while(i<n)
{str1+='D';i++;}
while(j<n)
{str1+='R';j++;}

// cout<<1<<endl<<str;
// return 0;
}

dp[1][1][0]=number_of_two(arr[1][1]);
dp[1][1][1]=number_of_five(arr[1][1]);

for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)


{
if(i==1 && j==1 )continue;

int a = number_of_two(arr[i][j]);
int b = number_of_five(arr[i][j]);

if(arr[i][j]==0)
{
a=1;
b=1;

dp[i][j][0]=min(dp[i-1][j][0],dp[i][j-1][0])+a;
dp[i][j][1]=min(dp[i-1][j][1],dp[i][j-1][1])+b;

}
int i=n;
int j=n;

// for(int i=0;i<=n;i++){
// for(int j=0;j<=n;j++)cout<<" ("<<dp[i][j][0]<<","<<dp[i][j][1]<<") ";
// cout<<endl;
// }
int c;

//cout<<dp[n-1][n-1][0]<<dp[n-1][n-1][1]<<endl;
if(dp[n][n][0]<dp[n][n][1])
c=0;
else
c=1;

while(i>1 || j>1)
{
int c1=INT_MAX;
int c2=INT_MAX;
if(j-1>=1)
c1 = dp[i][j-1][c];
if(i-1>=1)
c2 = dp[i-1][j][c];

if(c1<c2)
{
j--;
str='R'+str;

}
else{

i--;
str='D'+str;

if(i==1 && j==1)


break;
}

int ans = min(dp[n][n][0],dp[n][n][1]);


if(ans==0 && x_zero!=-1)
cout<<ans<<endl<<str;
else if(ans!=0 && x_zero!=-1)
cout<<1<<endl<<str1;
else
cout<<ans<<endl<<str;
return 0;
}

S-ar putea să vă placă și