校内赛 【同余方程】【组合数】 解题报告
2017-10-19 14:26
288 查看
校内赛数论。
本来三道题的,想想就写两道吧。
算了感觉很没意思
然后又没有分。
而且第一次还作死写了Lucas,结果直接暴力求。。。。
好吧,习惯了
第一题做了还挺高兴毕竟难得解对这个二元一次同余方程。
结果没特判很无语。
然后第二题水的很。虽然我一来看成右上方然后死活推不出来。。。
然后发现是大水题就马上过了。。。
然后。。。
然后。。。
我没特判。。。
第三题。写一个DFS爆搜过后感觉无聊,然后想了想好像做过不过不太一样。然后表示二进制太差容斥也不行,所以写一个DP吧。三维数组记录位置、个数、异或值。
然后挂了。连DFS都挂了。
我是不是该退役了?
反正也该退役了。
本来三道题的,想想就写两道吧。
Pay
思路
代码
就因为没有特判无解,没有分。。。算了感觉很没意思
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cmath> #include<vector> using namespace std; int T,opt; long long gcd(long long a,long long b) { return b==0?a:gcd(b,a%b); } void exgcd(long long a,long long b,long long &x,long long &y) { if (b==0) {x=1,y=0;return ;} long long x0,y0; exgcd(b,a%b,x0,y0); x=y0; y=x0-(a/b)*y0; } int main() { freopen("pay.in","r",stdin); freopen("pay.out","w",stdout); scanf("%d%d",&T,&opt); while(T--) { long long a,b,c; scanf("%I64d%I64d%I64d",&a,&b,&c); long long x,y,x0,y0; long long d=gcd(a,b); if (c%d) { if (opt==1) printf("0\n" ); else printf("0 0\n"); continue ; } a/=d,b/=d,c/=d; exgcd(a,b,x,y); x*=c; x=(x%b+b)%b; y=(c-a*x)/b; y0=(y%a+a)%a; long long cnt=(y-y0)/a+1; long long tot=(x+x+b*(cnt-1))*cnt/2+(y+y0)*cnt/2; printf("%I64d",cnt); if (opt==2) printf(" %I64d\n",tot); else printf("\n"); } return 0; }
sumcomb
思路
代码
很遗憾,我又没有特判。然后又没有分。
而且第一次还作死写了Lucas,结果直接暴力求。。。。
好吧,习惯了
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cmath> #include<vector> using namespace std; const long long mod=1e9+7; const int N=1000000+5; int dir,T; long long n,m,num ,inv ; void init() { num[0]=inv[0]=inv[1]=1; for (int i=1;i<=N;i++) num[i]=num[i-1]*i%mod; for (int i=2;i<=N;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod; for (int i=1;i<=N;i++) inv[i]=inv[i]*inv[i-1]%mod; } long long work(long long a,long long b) { if (a<b) return 0; return num[a]*inv[b]%mod*inv[a-b]%mod; } int main() { freopen("sumcomb.in","r",stdin); freopen("sumcomb.out","w",stdout); init(); scanf("%d",&T); while(T--) { scanf("%d%I64d%I64d",&dir,&n,&m); if (m>n) {printf("0\n");continue;} if (dir==1) printf("%I64d\n",work(n+1,m+1)); else printf("%I64d\n",work(n+1,m)); } return 0; }
吐槽
我这个数论垃圾好不容易可以自己做几道题。满心欢喜以为230还不错而且纯自己做。结果爆零。从来没有哪次爆零这么让人难受。第一题做了还挺高兴毕竟难得解对这个二元一次同余方程。
结果没特判很无语。
然后第二题水的很。虽然我一来看成右上方然后死活推不出来。。。
然后发现是大水题就马上过了。。。
然后。。。
然后。。。
我没特判。。。
第三题。写一个DFS爆搜过后感觉无聊,然后想了想好像做过不过不太一样。然后表示二进制太差容斥也不行,所以写一个DP吧。三维数组记录位置、个数、异或值。
然后挂了。连DFS都挂了。
我是不是该退役了?
反正也该退役了。
相关文章推荐
- 校内赛 不正常序列 堆 解题报告
- BZOJ 1008 组合数学 解题报告
- 组合的输出 解题报告
- 洛谷 1869 愚蠢的组合数 Lucas定理 解题报告
- bzoj 3505 数三角形 组合数 解题报告
- 2017.8.17 校内赛 解题报告 数论 【离散对数】【莫比乌斯反演】【莫比乌斯反演】
- 17.8.19 校内赛 解题报告【求线段交点+凸包+求多边形面积】【判定点是否在多边形内】【二分答案+半平面交】
- 解题报告: Codeforces 396A. On Number of Decompositions into Multipliers 组合
- 17.7.24 校内赛 解题报告【二分答案】【记忆化搜索】【数据结构】
- 【ACM训练计划】 数论、组合数学 好题精选+解题报告
- Leetcode #49. Group Anagrams 变位词组合 解题报告
- 一中OJ #3167 排列组合数计算[2] | 高级数论 组合计数 | 解题报告
- timus 1172. Ship Routes URAL 解题报告 组合DP
- 校内赛 Codeforces 815C. Karen and Supermarket 树形DP 解题报告
- Uva 1073 - Glenbow Museum 解题报告(组合)
- BestCoder Round #35(第一题解题报告(组合数学(期望的可加性)或暴力枚举)
- 2017.9.17校内noip模拟赛解题报告
- LuoguP1082[NOIP2012] 同余方程 解题报告【拓展欧几里得】
- 北大ACM校内赛解题报告
- 砝码组合————解题报告