为啥总是未知问题
查看原帖
为啥总是未知问题
1147431
yuyujun楼主2024/1/18 12:04
#include<stdio.h>
long long int num[210];
long long int a[210]={0},b[210]={0},dp[210][5200];
long long int max(long long int x, long long int y) {
    return x > y ? x : y;
}

long long int min(long long int x, long long int y) {
    return x < y ? x : y;
}
int main()
{
    int n,k;
    scanf("%d %d",&n,&k);
    for(long long int i=1;i<=n;i++){
        scanf("%lld",&num[i]);
        while(num[i]%5==0){
            a[i]++;
            num[i]/=5;
        }
        while(num[i]%2==0){
            b[i]++;
            num[i]/=2;
        }
    }
    dp[0][0]=0;
    for(long long int i=1;i<=n;i++){
        for(long long int j=k;j;j--){
            for(long long int m=5200;m>=a[i];m--){
                dp[j][m]=max(dp[j][m],dp[j-1][m-a[i]]+b[i]);
            }
        }
    }
    long long int sum=0;
    for(long long int i=5200;i;i--)
    sum=max(sum,min(dp[k][i],i));
    printf("%lld",sum);
}
2024/1/18 12:04
加载中...