Cod sursa(job #206539)

Utilizator MciprianMMciprianM MciprianM Data 7 septembrie 2008 16:29:39
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
using namespace std;
int dp[8][4], p[8][4], l[8], pant[8], cates;
int main(){
  int R, D, i, n1, j, ok;
  ifstream f("pascal.in");
  f>>R>>D;
  f.close();
  dp[2][0]=2; p[2][0]=1; l[2]=1;
  dp[3][0]=3; p[3][0]=1; l[3]=1;
  dp[4][0]=2; p[4][0]=2; l[4]=1;
  dp[5][0]=5; p[5][0]=1; l[5]=1;
  dp[6][0]=2; dp[6][1]=3; p[6][0]=1; p[6][1]=1; l[6]=2;
  for(i=1;(i<<1)<=R; ++i){
    n1=R-i+1;
    for(j=0;j<l[D];++j)
      while(n1%dp[D][j]==0){
        n1/=dp[D][j];
        ++pant[dp[D][j]];
      }
    n1=i;
    for(j=0;j<l[D];++j)
      while(n1%dp[D][j]==0){
        n1/=dp[D][j];
        --pant[dp[D][j]];
      }
    ok=1;
    for(j=0; j<l[D];++j)
      if(pant[dp[D][j]]<p[D][j])
        ok=0;
    if(ok)      ++cates;
  }
  cates<<=1;
  if(ok && (!(R&1)))
    --cates;
  ofstream g("pascal.out");
  g<<cates<<'\n';
  g.close();
  return 0;
}