bzoj2456: mode
来源:互联网 发布:淘宝客服网上人工服务 编辑:程序博客网 时间:2024/06/05 12:06
链接
http://www.lydsy.com/JudgeOnline/problem.php?id=2456
题解
比较好玩的题目,这题
我是用三个不大不小的质数,开三个桶,然后把模数装进去。
肯定每个桶里都只有一个数出现了大于
代码
//中国剩余定理#include <cstdio>#define mod1 10007#define mod2 233#define mod3 33331#define noi 10000000000ll#define ll long longusing namespace std;int cnt1[mod1], cnt2[mod2], cnt3[mod3];ll a[5], N, m[5];ll pow(ll a, ll b, ll p){ ll ans=1, t=a; for(;b;b>>=1,t=t*t%p)if(b&1)ans=ans*t%p; return ans;}void crt(){ ll ans=0, M=1, i; for(i=1;i<=*m;i++)M*=m[i]; for(i=1;i<=*m;i++)ans=(ans+a[i]*M/m[i]*pow(M/m[i],m[i]-2,m[i]))%M; printf("%lld",ans-noi);}inline ll read(ll x=0){ char c=getchar(); bool f=0; while(c<48 or c>57)f=f or c=='-', c=getchar(); while(c>=48 and c<=57)x=(x<<1)+(x<<3)+c-48, c=getchar(); return f?-x:x;}int main(){ ll i, x; N=read(); for(i=1;i<=N;i++) { x=read()+noi; cnt1[x%mod1]++; cnt2[x%mod2]++; cnt3[x%mod3]++; } for(i=0;i<mod1;i++)if(cnt1[i]>N>>1)a[1]=i; for(i=0;i<mod2;i++)if(cnt2[i]>N>>1)a[2]=i; for(i=0;i<mod3;i++)if(cnt3[i]>N>>1)a[3]=i; m[1]=mod1, m[2]=mod2, m[*m=3]=mod3; crt(); return 0;}
0 0
- bzoj2456 mode
- [BZOJ2456]mode
- BZOJ2456: mode
- bzoj2456: mode
- bzoj2456:mode
- 【bzoj2456】 mode
- Bzoj2456 mode
- [bzoj2456] mode
- bzoj2456: mode
- BZoj2456: mode
- BZOJ2456: mode
- bzoj2456: mode
- bzoj2456: mode
- [bzoj2456]mode
- bzoj2456 mode
- bzoj2456: mode
- BZOJ2456 mode 抵消思想
- 【BZOJ2456】mode,卡内存
- 【Java学习20170427】jQuery
- poj3321——Apple Tree(树上树状数组)
- return false防止默认的事件行为
- HDU
- 多分类问题Softmax Regression
- bzoj2456: mode
- Android 集成FireBase Realtime DataBase实现聊天
- SuperMap iMobile for iOS地图开发入门—XIB模式
- ssh环境配置——搭建spring环境
- <Effective Mordern C++>笔记:Item 5:Prefer auto to explicit type declarations.
- bzoj1509: [NOI2003]逃学的小孩
- Android车牌识别与PDA
- 《Cracking the Coding Interview程序员面试金典》----从0到n中某个数字的个数
- 字符串的相关内容总结