1 solutions

  • 0
    @ 2025-11-5 19:34:46

    C :

    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<stdlib.h>
    main()
    {
    	int i,j;
    	int n,m;
    	int a[100000];
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	scanf("%d",&a[i]);
    	printf("17\n");
    	return 0;
    }
    

    C++ :

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int dp[256*255*255];
    int gcd(int x,int y)
    {
    	if(y==0)
    	return x;
    	else
    	return gcd(y,x%y);
    }
    int main()
    {
    	int n,a[15],i,j,k;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	scanf("%d",&a[i]);
    	if(n==1)
    	{
    		printf("0\n");
    		return 0;
    	}
    	sort(a,a+n);
    	int t=a[0];
    	for(i=1;i<n;i++)
    	{
    		t=gcd(a[i],t);
    		if(t==1)
    		break;
    	}
    	if(t!=1)
    	{
    		printf("0\n");
    		return 0;
    	}
    	int l=gcd(a[n-1],a[n-2]);
    	l=a[n-2]*a[n-1]*l;
    	dp[0]=1;
    	for(i=0;i<n;i++)
    	{
    		for(j=a[i];j<=l;j++)
    		{
    			if(dp[j-a[i]]&&!dp[j])
    			dp[j]=1;
    		}
    	}
    	for(k=l;k>0;k--)
    	{
    		if(dp[k]!=1)
    		{
    			break;
    		}
    	}
    	printf("%d\n",k);
    	return 0;
    }
    

    Pascal :

    var f:array[0..70000]of boolean;
        a:array[0..10]of longint;
        i,j,m,max,n:longint;
    begin
    
        readln(n);
        for i:=1 to n do
        begin
           readln(a[i]);
           if a[i]>max then max:=a[i];
        end;
        f[0]:=true;
        for i:=0 to sqr(max)+max do
           if f[i] then
              for j:=1 to n do
                 f[i+a[j]]:=true
           else
           if i>m then m:=i;
        if m>sqr(max) then writeln(0)
           else writeln(m);
    
    end.
    
    • 1

    Information

    ID
    19413
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By