Pagini recente » Cod sursa (job #782698) | Cod sursa (job #1607405)
#include<fstream>
using namespace std;
int a[3][5000010];
int divizor(int n,int div,int indice,int mod){
int i=0,primul=0,rez=0,sol=0,j=0;
if (mod==1){
for (i=1;i<((n+1)/2);i++){
rez=0;
primul=(i+1)%div;
if (primul!=0) primul=div-primul;
for(j=i+1+primul;j<=n;j=j+div) rez+=a[indice][j];
for(j=div;j<=n-i;j=j+div) rez-=a[indice][j];
if (rez>0) sol++;
}
sol=sol*2;
if (n%2==0) {
rez=0;
primul=(n/2+1)%div;
if (primul!=0) primul=div-primul;
for(j=n/2+1+primul;j<=n;j=j+div) rez+=a[indice][j];
for(j=div;j<=n/2;j=j+div) rez-=a[indice][j];
if (rez>0) sol++;
}
}
if (mod==2){
div=div/2;
for (i=1;i<((n+1)/2);i++){
rez=0;
primul=(i+1)%div;
if (primul!=0) primul=div-primul;
for(j=i+1+primul;j<=n;j=j+div) rez+=a[indice][j];
for(j=div;j<=n-i;j=j+div) rez-=a[indice][j];
if (rez>1) sol++;
}
sol=sol*2;
if (n%2==0) {
rez=0;
primul=(n/2+1)%div;
if (primul!=0) primul=div-primul;
for(j=n/2+1+primul;j<=n;j=j+div) rez+=a[indice][j];
for(j=div;j<=n/2;j=j+div) rez-=a[indice][j];
if (rez>1) 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);
for (i=2;i<=linie;i=i+2) a[0][i]=1+a[0][i/2];
for (i=3;i<=linie;i=i+3) a[1][i]=1+a[1][i/3];
for (i=5;i<=linie;i=i+5) a[2][i]=1+a[2][i/5];
switch(numar){
case 2:
rez=divizor(linie,numar,0,1);
break;
case 3:
rez=divizor(linie,numar,1,1);
break;
case 4:
rez=divizor(linie,numar,0,2);
break;
case 5:
rez=divizor(linie,numar,2,1);
break;
case 6:
rez=divizor(linie,numar,2,3);
break;
}
return rez;
}