Cod sursa(job #1607376)

Utilizator test72101S.A.C. test72101 Data 21 februarie 2016 01:04:16
Problema Pascal Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <stdio.h>
 
int numar2(int linie,int i,int div)
{   int plus=0;
    long numar=0;
    int j;
    int sol=0;
        if (i!=0){
            plus=(linie-i+1)%div;
            if (plus!=0) plus=div-plus;
            for(j=linie-i+1+plus;j<=linie;j=j+div) numar=numar+j/div;
             
            for(j=div;j<=i;j=j+div) numar=numar+j/div;
        }
            if (numar>0) sol++;       
    return sol;
}
int main(){
    int linie,numar,rez,i;
    FILE *f=fopen("pascal.in","r");
    FILE *g=fopen("pascal.out","w");
    fscanf(f,"%d %d",&linie,&numar);
     
    switch(numar)
        {
    case 2:
        for(i=0;i<((linie+1)/2);i++) rez+=2*numar2(linie,i,2);
        if (linie%2==0) rez+=numar2(linie,linie/2,2);
        break;
    case 3:
        for(i=0;i<((linie+1)/2);i++) rez+=2*numar2(linie,i,3);
        if (linie%2==0) rez+=numar2(linie,linie/2,3);
        break;
    case 4:
        for(i=0;i<((linie+1)/2);i++) rez+=2*numar2(linie,i,2);
        if (linie%2==0) rez+=numar2(linie,linie/2,2);
        break;
    case 5:
        for(i=0;i<((linie+1)/2);i++) rez+=2*numar2(linie,i,5);
        if (linie%2==0) rez+=numar2(linie,linie/2,5);
        break;  
    }
    fprintf(g,"%d",rez);
}