您的位置:首页 > 其它

ZOJ3622:Magic Number

2013-11-18 20:18 239 查看
Apositivenumberyiscalledmagicnumberifforeverypositiveintegerxitsatisfiesthatputytotherightofx,
whichwillformanewintegerz,zmody=0.

Input

Theinputhasmultiplecases,eachcasecontainstwopositveintegersm,n(1<=m<=n<=2^31-1),proceedtotheendoffile.

Output

Foreachcase,outputthetotalnumberofmagicnumbersbetweenmandn(m,ninclusively).

SampleInput

11
110

SampleOutput

1
4


题意:对于一个整数y,我们可以任何整数x放在Y前,组成新的数XY都能整除y,问区间内这个y有几个

思路:我们可以发现这些数都是由规律的,也就是通过1,2,5,25,125这几个数推导出来的,然后这道题就是个简单的打表了


#include<stdio.h>
#include<string.h>
#include<algorithm>
usingnamespacestd;

inta1[10]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
inta2[10]={2,20,200,2000,20000,200000,2000000,20000000,200000000,2000000000};
inta3[10]={5,50,500,5000,50000,500000,5000000,50000000,500000000};
inta4[10]={25,250,2500,25000,250000,2500000,25000000,250000000};
inta5[10]={125,1250,12500,125000,1250000,12500000,125000000,1250000000};

intmain()
{
intans,n,m,i;
while(~scanf("%d%d",&n,&m))
{
ans=0;
if(n>m)
swap(n,m);
for(i=0;i<10;i++)
if(n<=a1[i]&&a1[i]<=m)
ans++;
for(i=0;i<10;i++)
if(n<=a2[i]&&a2[i]<=m)
ans++;
for(i=0;i<9;i++)
if(n<=a3[i]&&a3[i]<=m)
ans++;
for(i=0;i<8;i++)
if(n<=a4[i]&&a4[i]<=m)
ans++;
for(i=0;i<8;i++)
if(n<=a5[i]&&a5[i]<=m)
ans++;
printf("%d\n",ans);
}

return0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: