• POJ1671 Rhyme Schemes


    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 1776   Accepted: 984   Special Judge

    Description

    The rhyme scheme for a poem (or stanza of a longer poem) tells which lines of the poem rhyme with which other lines. For example, a limerick such as If computers that you build are quantum
    Then spies of all factions will want 'em
    Our codes will all fail
    And they'll read our email
    `Til we've crypto that's quantum and daunt 'em

    Jennifer and Peter Shor (http://www.research.att.com/~shor/notapoet.html)

    Has a rhyme scheme of aabba, indicating that the first, second and fifth lines rhyme and the third and fourth lines rhyme.
    For a poem or stanza of four lines, there are 15 possible rhyme schemes:
    aaaa, aaab, aaba, aabb, aabc, abaa, abab, abac, abba, abbb, abbc, abca, a bcb, abcc, and abcd.
    Write a program to compute the number of rhyme schemes for a poem or stanza of N lines where N is an input value.

    Input

    Input will consist of a sequence of integers N, one per line, ending with a 0 (zero) to indicate the end of the data. N is the number of lines in a poem.

    Output

    For each input integer N, your program should output the value of N, followed by a space, followed by the number of rhyme schemes for a poem with N lines as a decimal integer with at least 12 correct significant digits (use double precision floating point for your computations).

    Sample Input

    1
    2
    3
    4
    20
    30
    10
    0

    Sample Output

    1 1
    2 2
    3 5
    4 15
    20 51724158235372
    30 846749014511809120000000
    10 115975

    Source

     

    按照题目所说,double的精度就可以过

    第二类Stirling数:将n个不同的元素分成m个集合的问题。

    度娘百科:http://baike.baidu.com/link?url=Gf9ql9PnQNNjCZVUgI6SH_o1DgFwpL5yOFalDr_baNqKmrr0unKZvaDNU5RzSGmMQIbKW3Efivp0GPOlz3tcga

    别人简洁的题解:http://blog.csdn.net/nvfumayx/article/details/12356847

     1 /**/
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<algorithm>
     7 using namespace std;
     8 double f[110][110];//[元素数量][分组数量]=方法数 
     9 int n;
    10 void init(){
    11     int i,j;
    12     for(i=1;i<=100;i++) f[1][i]=0,f[i][1]=1;
    13     for(i=2;i<=100;i++)
    14       for(j=2;j<=i;j++){
    15           f[i][j]=f[i-1][j-1]+f[i-1][j]*j;
    16       }
    17     return;
    18 }
    19 int main(){
    20     init();
    21     while(scanf("%d",&n) && n){
    22         double ans=0;
    23         for(int i=1;i<=n;i++)ans+=f[n][i];
    24         printf("%d %.0f
    ",n,ans);
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    如何写文件上传下载
    填充表格的模板代码
    ArcGIS Server 分布式注意事项
    在android上导入第三方jar包 报错:Could not find class
    @Override annotation 出错
    签到时间
    分页三条件查询
    上传图片
    分页
    二级联动
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5734348.html
Copyright © 2020-2023  润新知