We show that the number of k-matching in a given undirected graph G is equal to the number of perfect matching of the corresponding graph Gk on an even number of vertices divided by a suitable factor. If G is bipartite then one can construct a bipartite Gk. For bipartite graphs this result implies that the number of k-matching has a polynomial-time approximation algorithm. The above results are extended to permanents and hafnians of corresponding matrices. 2000 Mathematics Subject Classification: 05A15, 05C70, 68A10. Keywords and phrases: Perfect matchings, k-matchings, permanents, hafnians, polynomial-time approximation algorithm.