1. Си / Говнокод #14707

    +140

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 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;}

    Динамический алгоритм. работа с остатками. тестировщик прожевал и выдал максимум:)

    Запостил: Sauron, 20 Февраля 2014

    Комментарии (7) RSS

    • Мои глаза!!!
      Ответить
    • ацм такой ацм...
      Ответить
    • > (a[i]%k+k)%k
      чё, интеллоорихметикопроблемы? :3
      Ответить
      • У интелоарифметики есть плюс: можно срезать студентов, предложив им простую задачку на определение дня недели.
        Ответить
    • Блин, даже astyle не помог догадаться, что за задачу тут пытались решить...

      Что-то я совсем отупел.
      Ответить
      • "Можно ли из заданных N чисел составить число, делящееся на K, пользуясь только сложением и вычитанием"?

        n=4, k=5, a=[10,10,6,2] - нельзя
        n=4, k=5, a=[11,10,6,2] - можно (11-10+6-2 = 5)

        Как-то так?
        Ответить
    • показать все, что скрытоВъебал минусов.
      Ответить

    Добавить комментарий