传送门


用hash,因为map的复杂度可能在这题中因为多一个log卡掉,但是hash不会

可能因为这个生成的随机数有循环的情况,不是完全均匀的

而且这题hash表的长度也可以开的很大

 #include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<queue>
#include<vector>
#define INF 0x7f7f7f7f
#define ll long long
#define pii pair<ll,int>
#define MOD 10000005
using namespace std;
int n;
ll m;
pii H[MOD];
vector<int> vs;
void insert(ll x){
int t=x%MOD;
while(H[t].first&&H[t].first!=x){
t++;
if(t>=MOD){
t=;
}
}
if(!H[t].second) vs.push_back(t);
H[t]=make_pair(x,H[t].second+);
}
int main()
{
// freopen("data.in","r",stdin);
scanf("%d",&n);
scanf("%lld",&m);
for(int i=;i<=n/;i++){
ll t;scanf("%lld",&t);
insert(t);
for(int j=;j<=;j++){
ll q=(t*+)%m;
insert(q);
t=q;
}
}
ll ans=;
for(int i=;i<vs.size();i++){
ans+=((H[vs[i]].second+H[vs[i]].first)/(H[vs[i]].first+))*(H[vs[i]].first+);
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. 【转载】使用Pandas对数据进行筛选和排序
  2. Mysql存储过程调用
  3. html和css的编码规范
  4. PAT 1009. 说反话 (20)
  5. Android拓展系列(10)--使用Android Studio阅读整个Android源码
  6. mysql创建表与索引
  7. Visual Studio创建跨平台移动应用_02.Cordova Extension
  8. Linux shell入门基础(三)
  9. HTML5画布(图像)
  10. JavaScript 公有 私有 静态属性和方法
  11. 开发框架(OrchardNoCMS)介绍(一)
  12. java服务器获取客户端ip
  13. thinkphp使用phpqrcode生成带logo二维码
  14. nginx启动脚本,手动编辑
  15. python 豆瓣采集
  16. haproxy配置文件详解和ACL功能
  17. 【原创】JAVA面试解析(有赞一面)
  18. 重读《Java编程思想》
  19. 一步一步学习IdentityServer3 (15) 授权模式那些事
  20. jQuery之scroll用法实例

热门文章

  1. C语言最后一次博客作业
  2. 团队作业7-Beta版本冲刺计划及安排
  3. Alpha冲刺Day6
  4. 201621123025《Java程序设计》第二周学习总结
  5. 2017 国庆湖南 Day6
  6. Visual Studio 开发工具常用的插件
  7. New UWP Community Toolkit - AdaptiveGridView
  8. JavaSE阶段初期的一些问题
  9. SpringCloud的服务注册中心(四)- 高可用服务注册中心的搭建
  10. Mego开发文档 - 从EF6/EFCore迁移到Mego