NC205078. 莫的难题
描述
输入描述
第 1 行一个数 t,表示询问的次数接下来 t 行,每行两个数 n, m;详情见题目描述。数据范围:对于20%的数据,保证t=1对于10%的数据,保证n=m对于所有数据,保证1<=t<=10001<=m<=n<=100
输出描述
t行,每行一个数字,表示所有组合中第 C(n, m)%1e9+7 (n>=m) 个大的数?
示例1
输入:
2 3 2 4 3
输出:
3 5
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 484K, 提交时间: 2020-08-17 20:55:28
#include <bits/stdc++.h> using namespace std; int t; int a[5]={1,2,3,5,9}; int sanjiao[115][115]; int p[115]; int mod=1e9+7; int main() { cin>>t; sanjiao[1][1]=1; for(int i=2;i<=110;i++)//杨辉三角 for(int j=1;j<=i;j++) sanjiao[i][j]=(sanjiao[i-1][j-1]+sanjiao[i-1][j])%mod; while(t--){ int n,m; cin>>n>>m; int k=sanjiao[n+1][m+1],tt=0; while(k)//转为五进制 { k--; p[tt++]=a[k%5]; k/=5; } for(int i=tt-1;i>=0;i--)cout<<p[i]; cout<<endl; } }