• 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
  • 相关阅读:
    2020系统综合实践 第6次实践作业 04组
    2020系统综合实践 第5次实践作业
    2020系统综合实践 第4次实践作业
    2020系统综合实践 第3次实践作业
    2020系统综合实践 第2次实践作业
    2020系统综合实践 第1次实践作业
    软工实践个人总结
    观光队2019 SDN大作业
    Spring Cloud微服务调用Feign初探
    个人作业——软件工程实践总结&个人技术博客
  • 原文地址:https://www.cnblogs.com/shangyu/p/3646073.html
Copyright © 2020-2023  润新知