HDOJ1058 누수

5466 단어 dphdoj
영어가 틀렸어... 23333333. [마치 DP라고 하는 것 같은데, 사실 기초는 귀속일 뿐이야]
hdoj1058
#include<cstdio>
#include<string>
#include<iostream>
#include<vector>
#include<queue>
#include<stdlib.h>
#include<cstring>
#include<algorithm>
using namespace std;

long long dp[6000];
int n;
long long k1,k2,k3,k4;


int min(int a,int b)
{
    return a<b?a:b;
}
void dddd()
{
    printf("k1=%d,k2=%d,k3=%d,k4=%d
"
,k1,k2,k3,k4); } void init(int n) { dp[1]=1; long long mimi=2000000000; for(int i=2; i<=n; i++) { mimi=2000000000; for(int j=1; j<i; j++) { k1=dp[j]*2; k2=dp[j]*3; k3=dp[j]*5; k4=dp[j]*7; // printf(" %d ",i); //dddd(); if(k1>dp[i-1]) { mimi=min(k1,mimi); } else if(k2>dp[i-1]) { mimi=min(mimi,k2); } else if(k3>dp[i-1]) { mimi=min(k3,mimi); } else if(k4>dp[i-1]) { mimi=min(k4,mimi); } } dp[i]=mimi; } } void debug() { for(int i=1; i<=n; i++) printf("%lld ",dp[i]); printf("
"
); } int main() { init(5842); while(~scanf("%d",&n)&&n) { if( n%10==1&&n%100!=11)// 1112,13printf("The %dst humble number is %d.
"
,n,dp[n]); else if( n%10==2&&n%100!=12) printf("The %dnd humble number is %d.
"
,n,dp[n]); else if( n %10==3&&n%100!=13) printf("The %drd humble number is %d.
"
,n,dp[n]); else printf("The %dth humble number is %d.
"
,n,dp[n]); //debug(); } return 0; }

좋은 웹페이지 즐겨찾기