Pagini recente » Cod sursa (job #1562317) | Cod sursa (job #1463224) | Cod sursa (job #1736273) | Cod sursa (job #62488) | Cod sursa (job #115314)
Cod sursa(job #115314)
/*
*
*
infoarena 2.0 - preONI 2008 - Runda 2
*
*
*/
#include<stdio.h>
#define INPUT "multiplu.in"
#define OUTPUT "multiplu.out"
FILE *fin=fopen(INPUT, "r"),*fout=fopen(OUTPUT, "w");
long long a,b,numar,nrInmult,multiplu;
void readValues();
long long determinaZero();
long long cmmdc(long long, long long);
void determinaMultiplu();
int valid(long long);
void printSolution(long long);
int main(){
readValues();
numar = determinaZero();
if(a>b){
multiplu = a*b / cmmdc(a,b);
}
else{
multiplu = a*b / cmmdc(b,a);
}
determinaMultiplu();
fclose(fin);
fclose(fout);
return 0;
}
void readValues(){
fscanf(fin, "%lld %lld", &a, &b);
}
long long cmmdc(long long val1, long long val2){
long long r=0;
while(val2!=0){
r=val1%val2;
val1=val2;
val2=r;
}
return val1;
}
long long determinaZero(){
long long cont1,cont2,zeroDoi,zeroCinci;
cont1 = 0;
while(a%2==0){
++cont1;
a/=2;
}
cont2 = 0;
while(b%2==0){
++cont2;
b/=2;
}
if(cont1>cont2){
zeroDoi = cont1;
}
else{
zeroDoi = cont2;
}
cont1 = 0;
cont2 = 0;
while(a%5==0){
++cont1;
a/=5;
}
while(b%5==0){
++cont2;
b/=5;
}
if(cont1>cont2){
zeroCinci = cont1;
}
else{
zeroCinci = cont2;
}
if(zeroDoi>zeroCinci){
return zeroDoi;
}
else{
return zeroCinci;
}
}
void determinaMultiplu(){
int r;
r = multiplu%10;
switch(r){
case 1: nrInmult = 1; break;
case 3: nrInmult = 7; break;
case 7: nrInmult = 3; break;
case 9: nrInmult = 9; break;
}
long long nrValid;
nrValid = multiplu * nrInmult;
while(!valid(nrValid)){
nrInmult+=10;
nrValid = multiplu * nrInmult;
}
printSolution(nrValid);
}
void printSolution(long long val){
fprintf(fout, "%lld", val);
for(long long i=1;i<=numar;++i){
fprintf(fout, "0");
}
fprintf(fout, "\n");
}
int valid(long long val){
long long temp;
temp = val;
while(temp!=0){
if(temp%10>1){
return 0;
}
temp/=10;
}
return 1;
}