poj3286 How many 0's?

来源:互联网 发布:免费卡盟源码 编辑:程序博客网 时间:2024/06/10 03:34

题意:

统计a->b直接所有数字中0的个数总和

思路:

找规律。详情见 

51nod-1042 数字0-9的数量

#include <iostream>#include <stdio.h>using namespace std;long long ans=0;void solve(long long n,int op){    long long num=n;    long long cur=0;    long long last=0;    long long pre=0;    long long count=0;    long long i=1;    while(n/i!=0)    {        last=n%i;        pre=n/i/10;        cur=(n-pre*i*10-last)/i;        if (cur>0)            count+=(pre+1)*i;        else            count+=pre*i+last+1;        i*=10;    }    long long step=1;    while(num!=0)    {        count-=step;        step*=10;        num/=10;    }    if(op==0)    {        ans=ans-count;    }    else    {        ans=ans+count;    }}int main(){    long long  a,b;    while(cin>>a>>b)    {        ans=0;        if(a==-1&&b==-1)            break;        if(a==0)            ans++;        if(b==0)            ans++;        solve(a-1,0);        solve(b,1);        cout<<ans<<endl;    }    return 0;}


0 0
原创粉丝点击