I have been given the task to solve this problem:
Actually ten Methods of selecting three to three, 12345:
123, 124, 125, 134, 135, 145, 234, 235, 245 and 345
5C3 = 10 . In general,
nCr = n! / R! (NA)!
Where
r ?? ¤ n ,
n! = NÃ ?? (Nâ ???? 1) one ?? ... One ?? 3Ã ?? 2Ã ?? 1 , and
0! = 1 .
It is not up to
n = 23 , this value is more than one million:
23C10 = 1144066 .
How many, not necessarily different, the value of
nCr , for
1 ?? ¤ n â ?? ¤ 100 , is more than a million?
I have to come up with an algorithm in Ruby to solve that problem, but I do not understand how it happened.
This is a project Euler problem. You have to implement Pascal's triangle to solve this problem. . The Pascal triangle is symmetric, so we have to calculate half to get results, this will help your program run faster.
@@ fact_table = [] @@ Fact_table [0] Another method is that you can cache the factual results already calculated and use them to avoid unnecessary calculation overload can do. = 1; @@ fact_table [1] = 1; I in (2..100) @@ fact_ table [i] = i * @@ fact_ table [i-1] end DEP NCR (N, R) returns @@ fat_table [n] / (@@ fat_table [r] * @ @Fact_Table [NR]) for N = 0 (1. 1.00) for R (1.n) if NCR (N, R) & gt; 1000000 points + = 1 end and print "Count:", number, "\ n"
output
Count of more than 1 million: 4075
No comments:
Post a Comment