(Hdu step 2.3.6) Game of Connections (large number: triangle division of convex polygon)

Source: Internet
Author: User

(Hdu step 2.3.6) Game of Connections (large number: triangle division of convex polygon)

 

 

Question:

 

Game of Connections
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission (s): 673 Accepted Submission (s): 443
 
Problem DescriptionThis is a small but failed ent game. you are supposed to write down the numbers 1, 2, 3 ,..., 2n-1, 2n consecutively in clockwise order on the ground to form a circle, and then, to draw some straight line segments to connect them into number pairs. every number must be connected to exactly one another. and, no two segments are allowed to intersect.

It's still a simple game, isn' t it? But after you 've written down the 2n numbers, can you tell me in how many different ways can you connect the numbers into pairs? Life is harder, right?
InputEach line of the input file will be a single positive number n, cannot t the last line, which is a number-1. You may assume that 1 <=n <= 100.
OutputFor each n, print in a single line the number of ways to connect the 2n numbers into pairs.
Sample Input
23-1
Sample Output
25
 
SourceAsia 2004, Shanghai (Mainland China), Preliminary
RecommendEddy

 

 

Question Analysis:

After reading this question, the model can be abstracted as "triangle division of a convex polygon. The line segments do not overlap ". This model can be solved by the catlan number.

Note that catalans [20] has reached 6564120420. This is beyond the int range. The value of catalans [99] Is 227508830794229349661819540395688853956041682601541047340. This is beyond the scope of the certificate, so use a large number to process

 

The Code is as follows:

 

Import java. math. bigInteger; import java. util. extends; public class Main {public static void main (String [] args) {BigInteger catalans [] = new BigInteger [101]; catalans [1] = new BigInteger (1 ); bigInteger four = new BigInteger (4); BigInteger two = new BigInteger (2); BigInteger one = new BigInteger (1); int I; for (I = 2; I <= 100; ++ I) {// note that catalan [20] is already 6564120420. therefore, the recursive formula of the number of catalans must be used to obtain the catalan number of each item. catalans [I] = catalans [I-1]. multiply (four. multiply (BigInteger. valueOf (I )). subtract (two )). divide (BigInteger. valueOf (I + 1);} partition = new partition (System. in); while (partial. hasNext () {int n = seconds. nextInt (); if (n =-1) {return;} System. out. println (catalans [n]) ;}}

 

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.