1 solutions
-
0
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