VL07 - Tính tổ hợp

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Viết chương trình tính tổ hợp chập ~k~ của ~n~ phần tử có công thức như dưới đây:

$$C_{n}^{k} = \frac{n!}{k!(n-k)!}$$

Giới hạn

  • ~ 1 \le k \le n \le 25 ~

Input

Lần lượt là 2 số n, k cách nhau bởi khoảng trắng

Output

Kết quảtổ hợp chập ~k~ của ~n~

Sample

Input #1
5 2
Output #1
10

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    NgoDinhCan  đã bình luận lúc 29, Tháng 4, 2024, 15:53

    n, k = map(int,input().split()) def gt(n): if n == 0 or n == 1: return 1 else: return(ngt(n-1)) print(int(gt(n)/(gt(k)gt(n-k))))


  • 0
    kyluat2712  đã bình luận lúc 15, Tháng 4, 2024, 16:35

    include<iostream>

    using namespace std; int main(){ long long k,n; long long a=1; long long b=1; cin>>n>>k; if(k==n||k==0){ cout<<"1"; }else{ for(int i=n-k+1;i<=n;i++){ a=i; } for(int j=1;j<=k;j++){ b=j; } cout<<a/b; } } C++ AC ae tham khảo


  • 0
    tris23  đã bình luận lúc 12, Tháng 4, 2024, 13:17

    đề không rõ ràng nên sai test nhiều

    include <iostream>

    include<iomanip>

    using namespace std; long double giaithua(long double n) { if(n==1) return 1; return n*giaithua(n-1); }

    int main() { long double n, k; cin>>n>>k; if(n>=k) { if (n>=1 && k>=1) { if(k<=25 &&n<=25) { cout<<giaithua(n)/(giaithua(k)*giaithua(n-k)); } } } else { cout <<"MATH ERROR"; return 0; } return 0; }


  • 4
    nguyenductoan59  đã bình luận lúc 3, Tháng 4, 2024, 15:05

    C++ ĐÃ AC NHAA CHO MÌNH XIN 1 VOTE Ạ

    include <bits/stdc++.h>

    using namespace std;

    int main()

    {

    long double n, k, N = 1, K = 1, S = 1;
    cin >> n >> k;
    if ( n >= k )
    {
        if ( n >= 1 && k >= 1 )
        {
            if ( k <= 25 && n <= 25 )
            {
                for ( int f = 1 ; k >= f ; f++ )
                {
                    K *= f;
                }
            }
            for ( int j = 1 ; n >= j ; j++ )
            {
                N *= j;
            }
        }
        for ( int i = 1 ; ( n - k ) >= i ; i++ )
        {
            S *= i;
        }
        cout << N / ( K * S ) << endl;
    }
    else
    {
        cout <<"MATH ERROR"<< endl;
    }
    return 0;
    

    }


  • 0
    tienphat2101  đã bình luận lúc 19, Tháng 3, 2024, 3:23

    Cho bạn nào chưa AC hết được, thì nếu cái này các bạn tính giai thừa hay là chạy for gì đó nó đều bị tràn số nhé( test case 5). Để AC được hết thì các bạn cần dùng tam giác pascal nhé. Code full AC cho ae tham khảo:

    #include <iostream>
    using namespace std;
    
    long long solve(int n, int k) {
    if (k > n - k) {
        k = n - k;
    }
    long long result = 1;
    for (int i = 0; i < k; ++i) {
        result *= (n - i);
        result /= (i + 1);
    }
    return result;
    }
    
    int main() {
    int n, k;
    cin >> n >> k;
    cout << solve(n, k) << endl;
    return 0;
    }
    

  • -3
    Angel  đã bình luận lúc 26, Tháng 2, 2024, 4:27

    n,k=map(int,input().split()) if (n>k) and (n>0) and (k>0): S=1 j=1 A=1 for i in range (2,n+1): S=i for a in range (2,k+1): j=a for b in range (2,(n-k)+1): A=b c=S/(jA) print(int(c)) else: print("Math Error")


  • -3
    Khanhll123  đã bình luận lúc 25, Tháng 2, 2024, 3:13
    =)))
    

  • -2
    Chutecobac  đã bình luận lúc 23, Tháng 2, 2024, 16:36

    include <bits/stdc++.h>

    using namespace std;

    int main() {

    long double n, k, N = 1, K = 1, S = 1;  
    cin >> n >> k;  
    if ( n >= k ){
        if ( n >= 1 && k >= 1 ){
            if ( k <= 25 && n <= 25 ){
                for ( int f = 1 ; k >= f ; f++ ){
                    K *= f; 
                } 
            } 
            for ( int j = 1 ; n >= j ; j++ ){
                N *= j; 
            } 
        } 
        for ( int i = 1 ; ( n - k ) >= i ; i++ ){
            S *= i; 
        } cout << N / ( K * S ) << endl;  
    } else { 
    cout <<"MATH ERROR"<< endl; 
    }
    

    return 0;

    }


  • 0
    stonerduy  đã bình luận lúc 22, Tháng 2, 2024, 16:16

    Bài mình dùng hàm thôi nhé

    /#include<iostream> using namespace std; unsigned long long gt(int n) {unsigned long long x=1; if ((n==0)||(n==1)) return x;else for (int i=1;i<=n;i++) x=i; return x; } int main() { long long kq=1;int k,n,t;cin>>n>>k; t=n-k; if (t>k){ for (int i=t+1;i<=n;i++) kq=i;kq/=gt(k); } else {for (int i=k+1;i<=n;i++) kq*=i;kq/=gt(t);} cout<<kq; return 0;

    }


  • 1
    vodung04  đã bình luận lúc 17, Tháng 2, 2024, 9:27

    test case 5 là gì v


    • 0
      stonerduy  đã bình luận lúc 22, Tháng 2, 2024, 16:16

      25 3 đó


  • -1
    minh2312130  đã bình luận lúc 20, Tháng 1, 2024, 10:17

    cho mình xin testcase 3 với mn ơi


    • 0
      OriBoys  đã bình luận lúc 13, Tháng 2, 2024, 16:03

      n = 15 k = 10


  • 0
    thh  đã bình luận lúc 14, Tháng 1, 2024, 11:36

    include <bits/stdc++.h>

    define int long long

    using namespace std;

    int n, k; int gt(int n) {

    int res = 1;
    for(int i = 2;i <= n; ++i)
        res *= i;
    return res;
    

    } int C(int k, int n) {

    if(k == n || k == 0)
        return 1;
    return C(k - 1, n - 1) + C(k, n - 1);
    

    } void solve() {

    cin >> n >> k;
    cout << C(k, n);
    

    }

    main() { ios::syncwithstdio(false); cin.tie(nullptr);cout.tie(nullptr);

    solve();
    return 0;
    

    }


  • -2
    hkv  đã bình luận lúc 14, Tháng 1, 2024, 5:25

    include <stdio.h>

    // tinh luy thua 1 so

    long long luy_thua(long long a){ long long res=1; for(long long i=res; i<= a; i++){ res*=i; } return res; }

    //tinh to hop chap k cua n

    long long tohop(long long n, long long k){ long long tohopchapkcuan=luythua(n)/(luythua(k)*luythua(n-k)); return tohopchapkcuan; } int main(){ long long n, k; scanf("%lld %lld", &n, &k); printf("%lld", to_hop(n, k)); } cho hỏi sao sai test 5 vậy ạ


  • -1
    DKN13  đã bình luận lúc 11, Tháng 1, 2024, 12:54

    To hop

    def toHop(k,n):

    if k==0 or k==n:
        return 1
    elif k==1:
        return n
    else:
        return toHop(k-1,n-1) + toHop(k,n-1)
    

    n,k = [int(x) for x in input().split()]

    print(toHop(k,n))


  • -1
    hoanngggg  đã bình luận lúc 9, Tháng 1, 2024, 14:30

    hàm tính C bằng đệ quy cho ai cần int C(int a, int b) { if (a == 0 or a == b) return 1; if (a == 1) return b; return C(a - 1, b - 1) + C(a, b - 1); }


  • -1
    trinhtheanh3010  đã bình luận lúc 15, Tháng 12, 2023, 17:43

    case cuối là gì v mn


  • 0
    Tuan_Kiettt  đã bình luận lúc 14, Tháng 12, 2023, 14:09

    help với ,C++20


  • 2
    tungkq123  đã bình luận lúc 28, Tháng 11, 2023, 5:39

    mong admin lên cho hiện phần dữ liệu test case như các web code leet code để khi sai tìm lỗi cho dễ ạ


  • -2
    dungolduck  đã bình luận lúc 25, Tháng 11, 2023, 4:23

    bài này ăn đc case cuối mấy bạn xài qhd dựa theo tam giác pascal!


  • -1
    neuoavs  đã bình luận lúc 17, Tháng 10, 2023, 10:31

    include <iostream>

    bool check (int value){ if (1 <= value && value <= 25) return 1; else return 0;
    } long long C(int n , int k){ long long tu = 1, mau = 1; for (int i = n ; (n - k) < i; i--){ tu *= i; } for (int i = k ; 1 <= i ; i--){ mau *= i; } return tu/mau;

    } int main(){ int n, k; std::cin >> n >> k; if (k <= n && check(n) && check(k)) std::cout << C(n,k); return 0;
    }

    <C++>


  • -1
    minh253  đã bình luận lúc 24, Tháng 9, 2023, 1:47

    java 8 nhe

    import java.util.*;

    public class Combination {

    static long C(long n, long k){
        if (k==0 || k==n)   return 1;
        return C(n-1,k-1) + C(n-1,k);
    }
    public static void main (String[] args){
        Scanner inp = new Scanner (System.in);
        long n = inp.nextLong(), k = inp.nextLong();
    
        System.out.print(C(n,k));
    }
    

    }

    // chương trình tính tổ hợp chập k của n phần tử


  • 1
    godcyber  đã bình luận lúc 21, Tháng 8, 2023, 2:46

    Công thức bên trên chỉ chạy được một phần thôi, chạy số to hơn tí là tràn bộ nhớ rồi nên phải dùng công thức truy hồi mới đúng.


  • -1
    khanhdat4  đã bình luận lúc 23, Tháng 7, 2023, 11:39

    testcase cuối là gì ấy nhỉ


    • 0
      garennoier  đã bình luận lúc 15, Tháng 8, 2023, 14:17

      25 voi 3 do loi tran so ban xem lai nhe