Cod sursa(job #2140293)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 23 februarie 2018 10:39:51
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <cstdio>
using namespace std;
bool ok(long long t)
{
    do
    {
        if(!(((t%10)==1)||((t%10)==0)))return 0;
        t/=10;
    }while(t);
    return 1;
}
int v[10];
int l[10];
int nr[10];
long long putere[18];
int main()
{
    freopen("multiplu.in","r",stdin);
    freopen("multiplu.out","w",stdout);
    int a,b,r,n;
    scanf("%d%d",&a,&b);
    n=a*b;
    while(b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    n/=a;

    int cp=n;
    int cnt=0;
    do
    {
        l[++cnt]=cp%10;
        cp/=10;
    }while(cp);
        if(n%2==0&&n%10!=0)v[cnt]=5;
    if(n%10==0)v[cnt]=0;
    if(n%10==1)v[cnt]=1;
    if(n%10==3)v[cnt]=7;
    if(n%10==5)v[cnt]=2;
    if(n%10==7)v[cnt]=3;
    if(n%10==9)v[cnt]=9;
    for(r=1;r<=cnt/2;r++)
    {
        int aux=l[r];
        l[r]=l[cnt-r+1];
        l[cnt-r+1]=aux;
    }
    nr[cnt]=l[cnt];
    putere[cnt]=1;
    for(r=cnt;r>0;r--)
    {
        putere[r-1]=putere[r]*10;
        nr[r-1]=putere[r-1]*l[r-1]+nr[r];
    }
    for(r=cnt-1;r>=1;r--)
    {
        for(int j=0;j<=9;j++)
        {
            int p=j*putere[r]+v[r+1];
            long long t=1LL*n*p;
            int x=ok(t);
            if(x==1)
            {
                printf("%lld\n",t);
                return 0;
            }
        }
    }
    return 0;
}