29 November 2010 Comments Off

The recreational mathematics, Great for IMO!!

The recreational mathematics archive site.

Al Zimmermann’s PROGRAMMING CONTESTS New Site: http://www.azspcs.net/

Andrew Clarke’s THE POLY PAGES


George Bell’s PEG SOLITAIRE PAGES Mirrored From: http://home.comcast.net/~gibell/pegsolitaire/

29 July 2010 Comments Off

Concrete Mathematics, Second Edition

Concrete Mathematics, Second Edition

Ronald L. Graham, Donald E. Knuth, and Oren Patashnik (Reading, Massachusetts: Addison-Wesley, 1994)

This book introduces the mathematics that supports advanced computer programming and the analysis of algorithms. The primary aim of its well-known authors is to provide a solid and relevant base of mathematical skills – the skills needed to solve complex problems, to evaluate horrendous sums, and to discover subtle patterns in data. It is an indispensable text and reference not only for computer scientists – the authors themselves rely heavily on it! – but for serious users of mathematics in virtually every discipline.

Concrete Mathematics is a blending of CONtinuous and disCRETE mathematics. “More concretely,” the authors explain, “it is the controlled manipulation of mathematical formulas, using a collection of techniques for solving problems.” The subject matter is primarily an expansion of the Mathematical Preliminaries section in Knuth’s classic Art of Computer Programming, but the style of presentation is more leisurely, and individual topics are covered more deeply. Several new topics have been added, and the most significant ideas have been traced to their historical roots. The book includes more than 500 exercises, divided into six categories. Complete answers are provided for all exercises, except research problems, making the book particularly valuable for self-study.

Major topics include:

  • Sums
  • Recurrences
  • Integer functions
  • Elementary number theory
  • Binomial coefficients
  • Generating functions
  • Discrete probability
  • Asymptotic methods

This second edition includes important new material about mechanical summation. In response to the widespread use of the first edition as a reference book, the bibliography and index have also been expanded, and additional nontrivial improvements can be found on almost every page. Readers will appreciate the informal style of Concrete Mathematics. Particularly enjoyable are the marginal graffiti contributed by students who have taken courses based on this material. The authors want to convey not only the importance of the techniques presented, but some of the fun in learning and using them.

Download now! Concrete Mathematics – Graham-Knuth-Patashnik

More Books…


17 July 2010 Comments Off

Mathematics for TopCoders

I have seen a number of competitors complain that they are unfairly disadvantaged because many TopCoder problems are too mathematical. Personally, I love mathematics and thus I am biased in this issue. Nevertheless, I strongly believe that problems should contain at least some math, because mathematics and computer science often go hand in hand. It is hard to imagine a world where these two fields could exist without any interaction with each other. These days, a great deal of applied mathematics is performed on computers such as solving large systems of equations and approximating solutions to differential equations for which no closed formula exists. Mathematics is widely used in computer science research, as well as being heavily applied to graph algorithms and areas of computer vision.

This article discusses the theory and practical application to some of the more common mathematical constructs. The topics covered are: primes, GCD, basic geometry, bases, fractions and complex numbers.

A number is prime if it is only divisible by 1 and itself. So for example 2, 3, 5, 79, 311 and 1931 are all prime, while 21 is not prime because it is divisible by 3 and 7. To find if a number n is prime we could simply check if it divides any numbers below it. We can use the modulus (%) operator to check for divisibility:

for (int i=2; i<n; i++)
   if (n%i==0) return false;

return true;