Cod sursa(job #679080)

Utilizator rootsroots1 roots Data 12 februarie 2012 19:00:33
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <cstring>

#define maxN 31

using namespace std;

ifstream in;
ofstream out;

int r[maxN];

inline int eucl(int a,int b)
{
    if(b==0) return a;
    for(int r=a%b;b;r=a%b,a=b,b=r);

    return a;
}

int main()
{
    int A,B,mod;

    in.open("multiplu.in");

    in>>A>>B;

    in.close();

    mod=eucl(A,B);
    mod=((long long)A*B)/mod;

    out.open("multiplu.out");

    int end=(1<<30);
    r[1]=1;
    for(int i=2;i<maxN;++i)
        r[i]=(r[i-1]*10)%mod;

    for(int i=1;i<=end;++i)
    {
        int sum=0;
        int x=i,bit=1;
        for(bit=1;x;x>>=1,++bit)
            if(x&1) sum+=r[bit];

        if(sum%mod==0)
        {
            bit-=2;
            for(x=i;bit>=0;--bit)
                if(x&(1<<bit)) out<<'1';
                else out<<'0';
            break;
        }
    }

    out<<'\n';

    out.close();

    return 0;
}