zoukankan      html  css  js  c++  java
  • 字串数(高精度组合数)

    字串数

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 3581    Accepted Submission(s): 878
    点我

    Problem Description
    一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA".
    给定若干字母和它们相应的个数,计算一共可以组成多少个不同的字符串.
     
    Input
    每组测试数据分两行,第一行为n(1<=n<=26),表示不同字母的个数,第二行为n个数A1,A2,...,An(1<=Ai<=12),表示每种字母的个数.测试数据以n=0为结束.
     
    Output
    对于每一组测试数据,输出一个m,表示一共有多少种字符串.
     
    Sample Input
    2
    1 2
    3
    2
    2 2
    0
     
    Sample Output
    3
    90
     
     
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string>
     4 #include <cstdio>
     5 #include <cstring>
     6 #include <cstdlib>
     7 #include <cmath>
     8 #include <vector>
     9 using namespace std;
    10 const int maxn=1000;
    11 const int base=1000000;
    12 const int INF=99999999;
    13 const int MIN=-INF;
    14 int a[maxn];
    15 void mul(int n)
    16 {
    17     int i,j,k;
    18     memset(a,0,sizeof(a));
    19     a[0]=1;
    20     for(i=2;i<=n;i++)
    21     {
    22         int c=0;
    23         for(j=0;j<maxn;j++)
    24         {
    25             k=a[j]*i+c;
    26             a[j]=k%10;
    27             c=k/10;
    28         }
    29     }
    30 }
    31 void div(int*a,int k)
    32 {
    33     int i;
    34     for(i=maxn-1;i>=0;i--)if(a[i]!=0)break;
    35     long long div=0;//定义成long long 不然计算过程中会溢出
    36     for(;i>=0;i--)
    37     {
    38         div=div*10+a[i];
    39         a[i]=div/k;
    40         div%=k;
    41     }
    42 }
    43 int mul2(int n)
    44 {
    45     int i;
    46     int k=1;
    47     for(i=1;i<=n;i++)
    48         k*=i;
    49     return k;
    50 }
    51 int main()
    52 {
    53     int n,m,i,j,k,t;
    54     while(cin>>n&&n)
    55     {
    56         int sum=0,c[maxn];
    57         for(i=0;i<n;i++)
    58             cin>>c[i],sum+=c[i];
    59 
    60         mul(sum);
    61         for(i=0;i<n;i++)
    62             div(a,mul2(c[i]));
    63 
    64         for(i=maxn-1;i>=0;i--)if(a[i]!=0)break;
    65 
    66         for(;i>=0;i--)
    67             cout<<a[i];
    68         cout<<endl;
    69     }
    70     return 0;
  • 相关阅读:
    element-ui-——el-uploadexcel导入
    正则表达式
    vue调用兄弟组件的方法使用vueBus调用$emit、$on(只需触发方法即可,不需要考虑传值或参数的问题)
    vue用法父组件调用子组件方法--->$refs
    vue——父子传值
    响应式布局
    vue创建脚手架 cil
    Vue 循环为选中的li列表添加效果
    课后习题-14
    date 命令详解
  • 原文地址:https://www.cnblogs.com/a1225234/p/4602026.html
Copyright © 2011-2022 走看看