結果
問題 | No.10 +か×か |
ユーザー |
![]() |
提出日時 | 2016-08-25 01:52:44 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 839 bytes |
コンパイル時間 | 575 ms |
コンパイル使用メモリ | 60,692 KB |
実行使用メモリ | 23,296 KB |
最終ジャッジ日時 | 2024-11-08 02:13:53 |
合計ジャッジ時間 | 1,479 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 5 WA * 7 |
ソースコード
#include<iostream> #include<cmath> using namespace std; #define NMAX 50 #define TotalMAX 100000 int main(){ int N,Total; int A[NMAX]; int dp[50][TotalMAX+1]; cin>>N; cin>>Total; for(int i=0;i<N;i++){ cin>>A[i]; } for(int i=0;i<N;i++){ for(int j=0;j<=TotalMAX;j++){ dp[i][j]=-1; } } dp[0][A[0]]=0; for(int i=1;i<N;i++){ for(int j=0;j<=TotalMAX;j++){ if(dp[i-1][j]!=-1){ if(j+A[i]<=TotalMAX){ if(dp[i][j+A[i]]==-1||dp[i-1][j]*10+0<dp[i][j+A[i]]){ dp[i][j+A[i]]=dp[i-1][j]*10+0; } } if(j*A[i]<=TotalMAX){ if(dp[i][j*A[i]]==-1||dp[i-1][j]*10+1<dp[i][j*A[i]]){ dp[i][j*A[i]]=dp[i-1][j]*10+1; } } } } } int ans=dp[N-1][Total]; for(int i=N-2;i>=0;i--){ int ansA=(int)(ans/pow(10.0,i))%10; if(ansA==0) cout<<"+"; else cout<<"*"; } cout<<endl; }