zoj 3622 Magic Number(找规律)

唉………………写的相当的乱,,状态十分不好。

可以求每个数前面有多少个magic number,然后相减即可。

#include<iostream>#include<cmath>using namespace std;int num(int x){int sum=0;while(x>0){sum++;x/=10;}return sum-3;}double pow(int b){double s=1;for(int i=1; i<=b; i++)s*=10;return s;}int solve(int x){int s=0;if(x==1)return 1;s=log10(x);if(int(pow(s))==x){if(x==10||x==100)return s*4;elsereturn s*5-2;}if(x<10){if(x>=5)s+=3;else if(x>=2)s+=2;else if(x>=1)s+=1;}else if(x<100){s*=4;if(x>=50)s+=3;else if(x>=25)s+=2;else if(x>=20)s+=1;}else{int n=num(x);s=5*s-2;if(x>=500*pow(n)){s+=4;}else if(x>=250*pow(n))s+=3;else if(x>=200*pow(n))s+=2;else if(x>=125)s+=1;}return s;}int main(){int m,n;while(cin>>m>>n){int km,kn;if(m>n)swap(m,n);if(m==1){km=1;kn=solve(n);cout<<kn-km+1<<endl;continue;}elsekm=solve(m-1);kn=solve(n);cout<<kn-km<<endl;}return 0;}

竞争颇似打网球,与球艺胜过你的对手比赛,

zoj 3622 Magic Number(找规律)

相关文章:

你感兴趣的文章:

标签云: