#10041. 「一本通 2.1 练习 7」门票

news2024/12/23 19:05:59

题目

题目描述

RPK 要带 MSH 去一个更加神秘的地方! RPK 带着 MSH 穿过广场,在第 1618
块砖上按下了一个按钮,在一面墙上随即出现了一个把手。RPK
握住把手,打开了一扇石质大门。他们穿过悠长而芬芳的小道,走到了一扇象征时间的大门——“the gate of time”。
门上写着一个关于时间的谜题 “承诺:____ 年”,RPK 思考了一会,从容地用手指写下 1 万,这时,门开始发出闪光,MSH
感觉到自己的心跳都快停止了。 门开了,眼前是一座美丽的神秘花园!

正当 RPK 和 MSH 准备进入的时候,突然出现了一个看门的老大爷 QL。 QL:“你们干什么你们,还没买票呢!” RPK
突然想起来现金全拿去买蛋糕了,RPK 很绅士的问:“能刷卡么?我身上没现金。” QL:“没钱?那你们不能进去!” RPK(汗):“……”
QL:“等等,我这有道不会的数学题,你解了我就让你们进去。” (众人:“……”)

有一个数列 { a n } , a 0 = 1 , a i + 1 = ( A × a i + a i   m o d   B )   m o d   C \{a_n\}, a_0 = 1, a_{i+1} = (A\times{a_i} + a_i \bmod B) \bmod C {an},a0=1,ai+1=(A×ai+aimodB)modC,要求这个数列第一次出现重复的项的标号。
这点小问题当然难不倒数学 bug 男 RPK 了,仅凭心算他就得到了结果。

输入格式

一行三个数,分别表示 A, B, C。

输出格式

输出第一次出现重复项的位置,如果答案超过 2 × 1 0 6 2\times 10^6 2×106 输出 -1。

代码详解

ACcode

#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
const ull N=1e7;
const ull b=1311;
ull hassh;
ull A,B,C;
char s[N];
struct Haash{
	ull h[N],l;
	ull tot,adj[N],nxt[N],num[N];
	ull top,stk[N];
	void init(){
		tot=0;
		while(top){
			adj[stk[top--]]=0;
		}
	}
	void insert(ull key){
		ull h=key%b;
		for(ull e=adj[h];e;e=nxt[e]){
			if(num[e]==key){
				return;
			}
		}
		if(!adj[h]){
			stk[++top]=h;
		}
		nxt[++tot]=adj[h],adj[h]=tot;
		num[tot]=key;
	}
	bool query(ull key){
		ull h=key%b;
		for(ull e=adj[h];e;e=nxt[e]){
			if(num[e]==key){
				return true;
			}
		}
		return false;
	}
}ha;
int main()
{
	cin>>A>>B>>C;
	int ans=0;
	ha.insert(1);
	hassh=(A*1+1%B)%C;
	while(!ha.query(hassh)){
		ha.insert(hassh);
		hassh=(A*hassh+hassh%B)%C;
		ans++;
	}
	cout<<ans+1;
	return 0;
}

在这里插入图片描述
好!哈希狠狠地TLE!
对不起,哈希

ACcode

逃课ing

//#define LOCAL 如果提交的话把这个去掉就行
#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
const ull N=1e8;
const ull b=1311;
ull hassh;
ull A,B,C;
char s[N];
bool q[N];
int main()
{
	#ifdef LOCAL//刘汝佳助我!!!!!!!!!!!
	freopen("data.in","r",stdin);//有效减少出错率
	freopen("data.out","w",stdout);
	#endif//刘汝佳神力!!!!!!!!!!!!!!!!
	cin>>A>>B>>C;
	ull ans=0;
	q[1]=1;
	hassh=(A*1+1%B)%C;
	while(++ans){
		if(ans>2000000){
			cout<<-1;
			return 0;
		}
		if(q[hassh]){
			cout<<ans;
			break;
		}
		q[hassh]=1;
		hassh=(A*hassh+hassh%B)%C;
	}
	return 0;
}

在这里插入图片描述
好,如果你哈希TLE了,请逃课
逃课指南:

  • unordered_set
  • 刘汝佳sama的手写哈希

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Vue3+Vite+TS+ESLint+Prettier+Husky+lint-staged+commitlint+stylelint的项目构建

博客后台管理系统使用后的是基于Vue3ViteTSESLintPrettier的开发&#xff0c;具体项目构建如下 1、基于Vite创建vue-ts模板的项目骨架 pnpm create vite 项目名称 --template vue-ts2、安装ESLint、Prettier相关的 ESLint: 控制代码质量 Prettier: 控制代码风格 2.1、安装ESLi…

ASEMI代理NXP高压三端双向可控硅BT139-800E综合指南

编辑-Z BT139-800E是一种高压三端双向可控硅开关&#xff0c;近年来由于其卓越的性能和多功能性而广受欢迎。这种强大的半导体器件广泛应用于各种应用&#xff0c;包括电机控制、照明控制和温度调节。 BT139-800E的特点 1.高压能力&#xff1a;BT139-800E设计用于处理高压&am…

Vue Router query 命名路由 params props

6.5.路由的 query 参数 传递参数<!-- 跳转并携带query参数&#xff0c;to的字符串写法 --> <router-link :to"/home/message/detail?id${m.id}&title${m.title}">跳转</router-link><!-- 跳转并携带query参数&#xff0c;to的对象写法&am…

1753_使用Perl修改文件时间戳

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) 对于使用软件对文件进行造假的手段我一直感兴趣&#xff0c;我很想知道那些人是通过什么手段修改的文件属性。一直以来&#xff0c;我觉得修改文件的时间戳是一个很难的工作&…

Altium Designer23 设计备忘

1、新建工程 2、新建原理图 3、新建PCB 4、添加元器件SCHLIB&#xff0c;PCBLIB库 5、绘制原理图 6、给元器件添加封装 7、原理图更新至PCB 8、绘制PCB

[State of GPT] OpenAI讲座随笔记

原版&#xff1a;State of GPT B站翻译版&#xff1a;【精校版】Andrej Karpathy微软Build大会精彩演讲&#xff1a; GPT状态和原理 - 解密OpenAI模型训练 1 GPT Training Pipeline图解 记录一下对这个图的理解&#xff1a; 大模型训练的四个阶段&#xff1a; Pretraining 阶…

开发者活动:云原生的开源 AI 大模型基础设施

随着 ChatGPT 的火热&#xff0c;大语言模型和相关应用不断涌现。你是否了解大语言模型的技术细节&#xff1f;你是否曾经开发过大语言模型应用&#xff1f;如果你对大语言模型背后的基础设施感兴趣&#xff0c;那么7月8号&#xff0c;北京海淀中关村创业大街&#xff0c;云原生…

chatgpt赋能python:Python调用关系图:了解你的代码依赖关系

Python调用关系图&#xff1a;了解你的代码依赖关系 Python是一种强大的编程语言&#xff0c;具有易读易写、开放源代码、多功能等优点。但是在开发大型项目时&#xff0c;代码会变得复杂&#xff0c;不同模块之间的依赖关系也会变得混乱。为了更好地了解你的代码依赖关系&…

Openresty原理概念篇(九)LuaJIT分支和标准Lua有什么不同

一 LuaJIT分支和标准Lua有什么不同 ① 背景 luajit官方 标准lua官方 openresty自身维护的luajit 编译luajit ② LuaJIT 在 OpenResty 整体架构中的位置 ③ 标准 Lua 和 LuaJIT 的关系 ④ 为什么选择LuaJIT ⑤ lua特别之处 1&#xff09;Lua 的下标从1开始 2) 使用…

Java HelloWorld

一、java命令 javac&#xff1a;将.java文件编译成.class文件 cp - 指定class搜索路径 d - 指定class文件生成目录 java: 执行.class或.jar文件 cp指定class搜索路径 示例&#xff1a;java test1.app #表示执行./test1/app.class文件main函数 jar:打包生成.jar文件 v- 可视化输…

星星之火,可以燎原——关于太赫兹的技术进展

盼望着&#xff0c;盼望着&#xff0c;5G来了&#xff0c;6G的脚步也近了。除了做好现有的技术工作&#xff0c;作为通信人还要不断关注新技术的发展&#xff0c;真心不易&#xff01;无线数据链路的容量在过去十几年中呈指数级增长&#xff0c;但对更高数据速率的需求持续增加…

MySQL数据库优化技术一

纵论 对mysql优化时一个综合性的技术&#xff0c;主要包括 表的设计合理化(符合3NF)添加适当索引(index) [ 四种: 普通索引、主键索引、唯一索引unique、全文索引 ]分表技术( 水平分割、垂直分割 ) 水平分割根据一个标准重复定义几个字段值相同&#xff0c;表名称不同的表&…

Android Jetpack Compose之ModalBottomSheet的使用

Android Jetpack Compose是一个现代化的UI工具包&#xff0c;让开发者以声明式的方式来构建Android应用。今天我们要讨论的是其中一个重要组件——ModalBottomSheet。 1. ModalBottomSheet简介 ModalBottomSheet是Jetpack Compose中的一个组件&#xff0c;它允许我们从屏幕底部…

Hugging News #0626: 音频课程更新、在线体验 baichuan-7B 模型、ChatGLM2-6B 重磅发布

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」&#xff0c;本期 Hugging News 有哪些有趣的消息…

第27章 uView 内置路由使用注意事项

1 uView 内置路由不支持通过“localhost”域名直接获取数据。 在前后分离开发中“axios” 路由支持使用“localhost”域名或IP地址获取后端的数据&#xff0c;所以不管是IIS部署还是后端调试通过“axios” 路由都能获取数据&#xff0c;对于.NetCore的前后端分离开发来说“axio…

【proxychains4】虚拟机内kali走主机代理

文章目录 简介安装配置使用测试 简介 ProxyChains是Linux和其他Unix下的代理工具。 它可以使任何程序通过代理上网&#xff0c; 允许TCP和DNS通过代理隧道&#xff0c; 支持HTTP、 SOCKS4和SOCKS5类型的代理服务器&#xff0c; 并且可配置多个代理。 ProxyChains通过一个用户定…

数据结构--单链表的定义

数据结构–单链表的定义 本节的学习目标&#xff1a; 单链表的定义&#xff08;如何用代码实现&#xff09; 优点:不要求大片连续空间&#xff0c;改变容量方便 缺点:不可随机存取&#xff0c;要耗费一定空间存放指针 代码实现 struct LNode {ElemType data; //数据域stru…

vcruntime140.dll,丢失如何修复,vcruntime140.dll,丢失修复详细办法(有效的方法)

今天打开photoshop软件的时候&#xff0c;突然间就打不开&#xff0c;电脑报错由于找不到vcruntime140.dll&#xff0c;无法继续执行此代码&#xff0c;然后我就把photoshop卸载了&#xff0c;再重新安装&#xff0c;依然还是报错。这个可怎么办&#xff1f;vcruntime140.dll如…

C++【day1】

练习 定义一个命名空间Myspace&#xff0c;包含以下函数&#xff1a;将一个字符串中的所有单词进行反转&#xff0c;并输出反转后的结果。 #include <iostream> #include<iomanip>using namespace std;namespace Myspace { void reversal(string *str); }void My…

CW32L083不同主频功耗测试

本文主要介绍CWL083VCT6芯片在不同主频下的功耗测试方法和测试结果。 1.HSIOSC时钟 HSIOSC 时钟由内部 RC 振荡器产生&#xff0c;不需要外部电路&#xff0c;比 HSE 时钟的成本低&#xff0c;启动速度快。HSIOSC 时钟频率固定为 48MHz&#xff0c;频率精度低于 HSE 时钟。RC …