- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
#include<stdio.h>
int main()
{FILE*f1,*f2;
f1=fopen("input.txt","r");
f2=fopen("output.txt","w");
int i,j,k,l,n,m,l1,m1;
int a[100000]={0};
int b[100]={0},b1[100]={0};
fscanf(f1,"%d%d",&n,&k);
for(i=0;i<n;i++)
{fscanf(f1,"%d",&a[i]);
if (i==0) b[(a[i]%k+k)%k]=1;
else {for(j=0;j<k;j++)
if(b[j]==1) {b1[(a[i]%k+j+k)%k]=1; b1[(j-a[i]%k+k)%k]=1;}
for(j=0;j<k;j++)
{b[j]=b1[j]; b1[j]=0;}}}
if (b[0]==1) fprintf(f2,"Divisible");
else fprintf(f2,"Not divisible");
fclose(f1);
fclose(f2);
return 0;}
Динамический алгоритм. работа с остатками. тестировщик прожевал и выдал максимум:)
someone 20.02.2014 12:32 # +3
TarasB 20.02.2014 12:58 # +1
TarasB 20.02.2014 12:59 # +2
чё, интеллоорихметикопроблемы? :3
Soul_re@ver 20.02.2014 13:19 # +1
bormand 20.02.2014 13:44 # +1
Что-то я совсем отупел.
bormand 20.02.2014 13:55 # +1
n=4, k=5, a=[10,10,6,2] - нельзя
n=4, k=5, a=[11,10,6,2] - можно (11-10+6-2 = 5)
Как-то так?
Konardo 21.02.2014 11:27 # −20