洛谷 P1980【计数问题】 题解(1)

鉴于数据最高只有七位数,通过判断数位,逐位判断即可完成本题。

(运行很快,打得手疼)

 1 //Stand up for the faith!
 2 #include<bits/stdc++.h> 
 3 using namespace std;
 4 long judge(int i,int p,int j)
 5 {   
 6     int a=0;
 7     if(j==1)
 8     {
 9         if(i%10==p)         a+=1;
10     }     
11     else if(j==2)
12     {
13         if(i%10==p)         a+=1;
14         if(i/10%10==p)      a+=1;
15     }
16     else if(j==3)
17     {
18         if(i%10==p)         a+=1;
19         if(i/10%10==p)      a+=1;
20         if(i/100%10==p)     a+=1;
21     }     
22     else if(j==4)
23     {
24         if(i%10==p)         a+=1;
25         if(i/10%10==p)      a+=1;
26         if(i/100%10==p)     a+=1;
27         if(i/1000%10==p)    a+=1;
28     }
29     else if(j==5)
30     {
31         if(i%10==p)         a+=1;
32         if(i/10%10==p)      a+=1;
33         if(i/100%10==p)     a+=1;
34         if(i/1000%10==p)    a+=1;
35         if(i/10000%10==p)   a+=1;
36     }
37     else if(j==6){
38         if(i%10==p)         a+=1;
39         if(i/10%10==p)      a+=1;
40         if(i/100%10==p)     a+=1;
41         if(i/1000%10==p)    a+=1;
42         if(i/10000%10==p)   a+=1;
43         if(i/100000%10==p)  a+=1;
44     }
45     else if(j==7){
46         if(i%10==p)         a+=1;
47         if(i/10%10==p)      a+=1;
48         if(i/100%10==p)     a+=1;
49         if(i/1000%10==p)    a+=1;
50         if(i/10000%10==p)   a+=1;
51         if(i/100000%10==p)  a+=1;
52         if(i/1000000%10==p) a+=1;
53     } 
54     return a;
55 }
56 int main()
57 {
58     int n,x,wei,sum=0;
59     n=read();
60     x=read();
61     for(int i=1;i<=n;i++)
62     {
63         if(i>=1000000)                  wei=7;
64         else if(i>=0&&i<10)             wei=1;
65         else if(i>=10&&i<100)           wei=2;
66         else if(i>=100&&i<1000)         wei=3;
67         else if(i>=1000&&i<10000)       wei=4;
68         else if(i>=10000&&i<100000)     wei=5;
69         else if(i>=100000&&i<1000000)   wei=6;
70 
71         sum+=judge(i,x,wei) ; 
72     }
73     cout<<sum<<endl;
74     return 0;
75 }

 

 
posted @ 2019-03-22 21:24  KGB1331  阅读(166)  评论(0编辑  收藏  举报