莫的难题

莫的难题

https://ac.nowcoder.com/acm/contest/5881/B

我觉得这是本场比赛最好的题目

题意

题目其实有点没说清楚,其实就是给定,,要求第大的数。

排序规则是:

取两个 5,则组合为:55;取 2 与 1,则组合为:21。

思路

一句话概括:五进制,但是起点是1,而不是0。

0 1 2 3 4 10 11 12 13 14
1 2 3 5 9 11 12 13 15 19

看到了吗?五进制下对应的是

如果你还不明白,我们从头开始推:

1 2 3 5 9
11 12 13 15 19
21 22 23 25 29
31 32 33 35 39
51 52 53 55 59
91 92 93 95 99
111

你会发现数据规律是: 个一位数,个两位数,个三位数,个四位数。

明白了吗,本题就是转化成五进制数,然后再把字符串转化回1,2,3,5,9和0,1,2,3,4对应的字符串。

而坑点就在于:五进制,但是起点是1,而不是0。

#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
using namespace std;
typedef long long ll;
ll mod=1e9+7;
ll qkpow(ll a, ll b) {
    ll ans = 1;
    while (b) {
        if (b & 1) ans = ans * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return ans;
}
ll getInv(ll a) { return qkpow(a, mod - 2); }  //求一个数的逆元
ll C(ll n, ll m) {                             //组合数 C(n,m)
    if (m < 0) return 0;
    if (n < m) return 0;
    if (m > n - m) m = n - m;
    ll up = 1, down = 1;
    for (ll i = 0; i < m; i++) {
        up = up * (n - i) % mod;
        down = down * (i + 1) % mod;
    }
    return up * getInv(down) % mod;
}
char mp[5]={&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;5&#39;,&#39;9&#39;};
int main() {
    ll t;sc(t);
    while (t--) {
        ll n, m; sc(n), sc(m);
        ll a = C(n, m);
        string ans="";
        while(a>0){
            --a;//精髓
            ans+=mp[a%5];
            a/=5;
        }
        reverse(ans.begin(),ans.end());
        cout<<ans<<endl;
    }
    return 0;
}
算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论
前排前排
1 回复 分享
发布于 2020-06-05 23:01
对不起,北极惨了
点赞 回复 分享
发布于 2020-09-25 21:38
点赞 回复 分享
发布于 2020-09-25 21:38
厉害,厉害,膜拜,膜拜
点赞 回复 分享
发布于 2020-09-11 16:39
太强了
点赞 回复 分享
发布于 2020-06-06 14:08
后排
点赞 回复 分享
发布于 2020-06-06 09:17
💴🥧
点赞 回复 分享
发布于 2020-06-05 23:32
后排
点赞 回复 分享
发布于 2020-06-05 23:03

相关推荐

难怪不开摄像头,全是简单的性格题,比大疆友善多了
NULL10086:今早上发的测评,我这还没做呢,官网上已经显示挂了
投递大疆等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 11:30
找工作7个月,投了7000封,3段世界五百强实习,才有一个offer,牛油们肯定比我强吧
码农索隆:不对不对不对,实习经历这么厉害,简历也没少投,问题出在哪呢
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
12
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务