hdu 4722

比赛的时候这道题一直都没出来,承启提醒我之后还是一直WA;

其实规律早就找到了````

其实这题还可以用数位dp来做,不过从来没写过,以后再贴;

代码:

 1 #include<iostream>
 2 #define ll long long
 3 using namespace std;
 4 
 5 ll get(ll n)
 6 {
 7     int s=0;
 8     ll i=n/10*10;
 9     ll m=n,ans=0;
10     for(;i<=m;i++)
11     {
12         n=i;
13         s=0;
14         while(n)
15         {
16             s+=n%10;
17             n/=10;
18         }
19         if(s%10==0) ans++;
20     }
21     return ans;
22 }
23 
24 ll getans(ll n)
25 {
26     if(n<0)return 0;
27     if(n<=10) return 1;
28     return n/10+get(n);
29 }
30 
31 int main()
32 {
33     int t,ca=1;
34     ll a,b;
35     cin>>t;
36     while(t--)
37     {
38         cin>>a>>b;
39         a--;
40         cout<<"Case #"<<ca++<<": ";
41         cout<<getans(b)-getans(a)<<endl;
42     }
43     return 0;
44 }
View Code

 

posted @ 2013-09-11 21:34  Yours1103  阅读(228)  评论(0编辑  收藏  举报