牛客假日团队赛16

比赛链接
https://ac.nowcoder.com/acm/contest/1089#question
B题题解
分两部分考虑。
第一部分,只有个完整的位的填法。
因为最高位要从1开始,而后面的每一位都需要递增,所以每一位都有种填法。同时假设r有i位,那么填法数就是。于是总的填法数就是种。
第二部分,最高位(不完整位)的填法。
假设最高位填的数字为i,那么i的范围是。而后面完整的位有个。这些位的选择范围是。因此当最高位数字为i时,对答案的贡献是。总的填法数就是种。
需要额外注意的是,最高位数字为i时,后面的数字只能大于i,所以总共有种数字。因此要保证。
代码如下

/*

*/
#define method_1
#ifdef method_1
/*

*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define D(x) cout<<#x<<" = "<pii;
const int maxl=200+5;
const int maxn=512+5;
const int INF=0x3f3f3f3f;
struct bigint{
    int n,a[maxl];
    bigint(){n=0;memset(a,0,sizeof(a));}
    int& operator[](int x){return a[x];}
    void print(){for(int i=n;i>=1;i--) cout<=w/k) ans=ans+c[(1<>k>>w;
    pre();
    solve();
    ans.print();
    return 0;
}
#endif
#ifdef method_2
/*

*/

#endif
#ifdef method_3
/*

*/

#endif

你可能感兴趣的:(牛客假日团队赛16)