GETTING RIGHT ANSWER ON MACHINE BUT WRONG IN CUSTOM INVOCATION IS GIVING WRONG ANSWER

Правка en1, от javacoder1, 2016-07-21 21:04:44

I was trying this question "http://codeforces.net/contest/27/problem/E"

Code is giving the correct answer on my machine for values say 1000 but in custom invocation it gives 0

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[12][1005];
int arr[]={0,2,3,5,7,11,13,17,19,23,29};
int base(int num)
{
    ll ans=num;
    for(int i=2;i<=1000;i++)
    {
        if( (ans*num)/num == ans )
            ans=ans*num;
        else
            return i;
    }
}
ll temp[100];
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;cin>>n;
    for(int i=1;i<=10;i++)
        for(int j=1;j<=n;j++)
        dp[i][j]=2e18;
    dp[1][1]=1;
    for(int i=2;i<=1000;i++)
    {
        if( (dp[1][i-1]*2)/2== dp[1][i-1] )
            dp[1][i]=2*dp[1][i-1];
        else
            break;
    }

    temp[0]=1;
    for(int i=2;i<=10;i++)
    {
        int till=base(arr[i]);
        for(int j=1;j<till;j++)
            temp[j]=temp[j-1]*1ll*arr[i];

        for(int j=1;j<=n;j++)
        {
            for(int k=0;k<till;k++)
            {

                if((dp[i-1][j] * temp[k])/temp[k] == dp[i-1][j] && j*(k+1)<=n)
                  {dp[i][j*(k+1)]=min(dp[i][j*(k+1)],dp[i-1][j]*temp[k]);}
                else
                   break;

            }
        }
        for(int j=1;j<=n;j++)
            dp[i][j]=min(dp[i][j],dp[i-1][j]);
    }
    cout<<dp[10][n]<<"\n";
}

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en1 Английский javacoder1 2016-07-21 21:04:44 1578 Initial revision (published)