poj2282The Counting Problem(组合)

链接

计算0-9每一个数字出现的次数 逐位进行处理 对于每一位取几时依次算下组合的情况 注意0的情况需要特殊处理一下 因为0000 00 这样都是等于0的 前面的几位是多余的

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #include<vector>
 7 #include<cmath>
 8 #include<queue>
 9 #include<set>
10 using namespace std;
11 #define N 100000
12 #define LL long long
13 #define INF 0xfffffff
14 const double eps = 1e-8;
15 const double pi = acos(-1.0);
16 const double inf = ~0u>>2;
17 int d[12],dd[12];
18 int an[12];
19 void judge(int xx,int x[],int f)
20 {
21     if(!xx) return ;
22     int i,j,e;
23     int p[12],g=0;
24     int y = xx;
25     while(xx)
26     {
27         p[++g] = xx%10;
28         xx/=10;
29     }
30     int o = 1;
31     x[0]+=1;
32     for(i = g ; i >= 1 ; i--)
33     {
34         for(i==g?j = 1:j=0 ; j < p[i] ; j++)
35         {
36             x[j]+=pow(10.0,g-o);
37         }
38         for(j = i-1 ; j>=1 ; j--)
39         {
40             int ko;
41             if(i==g)
42             {
43                 if(j==i-1)
44                 ko = pow(10.0,g-o-1)*(p[i]-1);
45                 else
46                 ko = pow(10.0,g-o-1)*(p[i]-1)+(pow(10.0,(i-j-1))-1)*pow(10.0,j-1);
47             }
48             else ko = pow(10.0,g-o-1)*p[i];
49             //cout<<ko<<" "<<i<<" "<<j<<" "<<o<<endl;
50             x[0]+=ko;
51             for(e = 1 ; e <= 9 ; e++)
52             {
53                 x[e]+=pow(10.0,g-o-1)*p[i];
54             }
55         }
56         int k = pow(10.0,g-o);
57         x[p[i]] += y%k+1;
58         o++;
59     }
60 
61     if(f)
62     {
63         for(i = 1 ;i <= g ;i++)
64         x[p[i]]--;
65     }
66 }
67 int main()
68 {
69     int i,a,b;
70     while(cin>>a>>b)
71     {
72         if(!a&&!b) break;
73         if(a>b) swap(a,b);
74         memset(d,0,sizeof(d));
75         memset(dd,0,sizeof(dd));
76         judge(a,d,1);
77         judge(b,dd,0);
78         for(i = 0 ;i < 9 ;i++)
79         cout<<dd[i]-d[i]<<" ";
80         cout<<dd[9]-d[9]<<endl;
81     }
82     return 0;
83 }
View Code

 

posted @ 2014-04-04 21:32  _雨  阅读(255)  评论(0编辑  收藏  举报