Cod sursa(job #1041131)

Utilizator Kira96Denis Mita Kira96 Data 25 noiembrie 2013 15:50:58
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.94 kb
#include<fstream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<bitset>
#define DIM 200000
#define M1 666013
#define M2 1000003
#define M3 826663
#define M4 123457
#define M5 1111151
#define C 276997
using namespace std;
ofstream g("dtcsu.out");
char s[DIM],ch;
bitset<M1> H1;
bitset<M2> H2;
bitset<M3> H3;
bitset<M4> H4;
bitset<M5> H5;
long long nr;
int sol,st,dr,mij,t,nb,i,n;
int main ()
{
    freopen("dtcsu.in","r",stdin);
    fread(s,1,DIM,stdin);
    while(s[0])
    {
        n=strlen(s);
        for(i=0;i<n;++i)
        {
            if(s[i]<='9'&&s[i]>='0')
            nr=nr*10+s[i]-'0';
            else
            {
                if(nb>C)
                {
                    while(!(nr&1))
                        nr>>=1;
                    if(!H1[nr%M1]||!H2[nr%M2]||!H3[nr%M3]||!H4[nr%M4]||!H5[nr%M5])
                    {
                        nr=0;
                        continue;
                    }
                    while(nr%3==0)
                        nr/=3;
                    while(nr%5==0)
                        nr/=5;
                    while(nr%7==0)
                        nr/=7;
                    while(nr%11==0)
                        nr/=11;
                    if(nr==1)
                        sol++;
                }
                else
                if(nb<C)
                {
                    nb++;
                    if(nr&1)
                    {
                    H1[nr%M1]=true;
                    H2[nr%M2]=true;
                    H3[nr%M3]=true;
                    H4[nr%M4]=true;
                    H5[nr%M5]=true;
                    }
                }
                else
                    nb++;
                nr=0;
            }
        }
        ch=0;
        scanf("%c",&ch);
        if(!ch)
            break;
        s[0]=ch;
        fread(s+1,1,DIM,stdin);
    }
    g<<sol;
    return 0;
}