結果
| 問題 |
No.458 異なる素数の和
|
| コンテスト | |
| ユーザー |
miwawa
|
| 提出日時 | 2024-02-17 14:04:47 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,077 bytes |
| コンパイル時間 | 235 ms |
| コンパイル使用メモリ | 32,512 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-09-28 23:41:23 |
| 合計ジャッジ時間 | 3,496 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 26 WA * 2 |
ソースコード
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define rep(i,a,b) for(i=a;i<b;i++)
int cha(const void*a,const void*b){
if(*(int*)a >*(int*)b){
return 1;
}else if(*(int*)a <*(int*)b){
return -1;
}else{
return 0;
}
}
int main(void){
int d,i,j,kk=0;
int mini=1000,k=0,qi=0,qj=0,n;
int s=0,h[100010];
int a[20100],b[110],c[200],w=0;
int dp[2][20010];
int heavy=1e9;
long long aa,bb;
scanf("%d",&n);
rep(i,2,20001){
s=0;
rep(j,2,143){
if(i%j==0){
s++;
}
}
if(s==1 && i<143){
a[k]=i;
k++;
}else if(s==0){
a[k]=i;
k++;
}
}
rep(i,0,20001){
dp[0][i]=0;
}
dp[0][0]=0;
j=0;
rep(i,0,k){
rep(j,0,20001){
if(j-a[i]>=0){
if(dp[0][j-a[i]]!=0){
dp[1][j]=fmax(dp[0][j-a[i]]+1,dp[0][j]);
}else if(j-a[i]==0){
dp[1][j]=fmax(dp[0][j-a[i]]+1,dp[0][j]);
}
}
}
rep(j,0,20001){
dp[0][j]=dp[1][j];
}
}
if(dp[0][n]!=0){
printf("%d\n",dp[0][n]);
}else{
printf("-1\n");
}
}
miwawa