找规律 1000以上的没 如每10倍就是5个数~1000以下的单独讨论
代码写的很长。。当时各种复制粘贴
好吧。我们要像昆神学习。写出简短的代码
#include<stdio.h>
int main()
{
	int i,j,a,b,a1,b1,c,d;
	while(scanf("%d %d",&a,&b)!=EOF)
	{
		a1=0;
		b1=0;
		d=a;
		for(i=2;d>=1000;i++)
		{
			d/=10;
		}
		if(a<10)
		{
			if(a==1)
				a1=1;
			if(a>=2)
				a1=2;
			if(a>=5)
				a1=3;
		}
		else if(a<100)
		{
			if(a==10)
				a1=4;
			if(a>=20)
				a1=5;
			if(a>=25)
				a1=6;
			if(a>=50)
				a1=7;
		}
		else if(a<1000)
		{
			if(a==100)
				a1=8;
			if(a>=125)
				a1=9;
			if(a>=200)
				a1=10;
			if(a>=250)
				a1=11;
			if(a>=500)
				a1=12;
		}
		else 
		{
			a1=12+(i-3)*5+1;
			if(d*8/1000!=0)
				a1++;
			if(d*5/1000!=0)
				a1++;
			if(d*4/1000!=0)
				a1++;
			if(d*2/1000!=0)
				a1++;
		}
		if(a>=1000)
		{
			if(1000%d==0)
				a1--;
		}
		else if(a==1||a==2||a==5||a==10||a==20||a==25||a==50||a==100||a==125||a==200||a==250||a==500)
			a1--;
		d=b;
		for(j=2;d>=1000;j++)
		{
			d/=10;
		}
		if(b<10)
		{
			if(b==1)
				b1=1;
			if(b>=2)
				b1=2;
			if(b>=5)
				b1=3;
		}
		else if(b<100)
		{
			if(b==10)
				b1=4;
			if(b>=20)
				b1=5;
			if(b>=25)
				b1=6;
			if(b>=50)
				b1=7;
		}
		else if(b<1000)
		{
			if(b==100)
				b1=8;
			if(b>=125)
				b1=9;
			if(b>=200)
				b1=10;
			if(b>=250)
				b1=11;
			if(b>=500)
				b1=12;
		}
		else 
		{
			b1=12+(j-3)*5+1;
			if(d*8/1000!=0)
				b1++;
			if(d*5/1000!=0)
				b1++;
			if(d*4/1000!=0)
				b1++;
			if(d*2/1000!=0)
				b1++;
		}
		printf("%d\n",b1-a1);
	}
	return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation