24点ゲームは非常に古典的でシンプルなゲームで、ポーカーの山から4枚のカードを取り、それらに操作シンボルを追加し、実行中の結果が24になるようにします.これを24点ゲームと呼びます.
今は 24 を組み合わせるのではなく、与えられた数 n を組み合わせていますが、使用できる数は 1 だけであり、演算は加算、乗算、および括弧のみである必要があります。与えられた数 N に対して、完了するには少なくとも数個の 1 が必要です
データ入力
数値を入力してください N ( 1≤N≤5000)
データ出力
N に等しくなるために必要な 1 の最小数を形成できるのは正符号、乗算符号、および括弧のみであることを示す整数を出力します。
サンプル1
入力サンプル
7
出力サンプル
6
ヒント
7=(1+1)*(1+1+1)+1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 5010;
int dp[maxn];
int main()
{
int n;
scanf("%d",&n);
dp[1]=1;
for(int i=2;i<=n;i++){
dp[i] = dp[i-1]+1;
for(int j=2;j*j<=i;j++){
if(i%j==0)
dp[i] = min(dp[i],dp[i/j]+dp[j]);
}
}
printf("%d\n",dp[n]);
return 0;
}