【无码专区3】乘法表的解密破译

因为只有std,没有自我实现,所以是无码专区

problem

给定一个 qqq 进制的乘法表,每个字符代表着 0∼p−10\sim p-10p1 不同的数字。

求每个字符代表的数字。保证有解。

×\times×ABCD
ACDBBDCBA
BBBBBBBBB
CDCBBDBBC
DBABBBCBD

i.e. CD\text{CD}CD 表示的是 ppp 进制下的结果,即:A×A=C⋅p+DA\times A=C·p+DA×A=Cp+D

上述例子的答案为:A=3,B=0,C=2,D=1\text{A=3,B=0,C=2,D=1}A=3,B=0,C=2,D=1

时限:10s256MB10s\ 256MB10s 256MB

我的想法

表示 000 的字符非常好找:所在“十字架”结构全都是该字符。

表示 111 的字符也很好找:所在“十字架”结构高位全是 000 字符,其余字符在低位出现的次数相同。

  • 对于 q≤5050%50\%50% 部分

显然,所有代表数字 <q<\sqrt{q}<q 的字符,自乘后高位一定是 000 对应字符,低位字符一定表示一个平方数。

找出所有 <q<\sqrt{q}<q 的字符,全排列枚举每个字符对应的数字,然后搜索乘法表是否冲突。

时间复杂度 O(q!q2)O(\sqrt{q}!q^2)O(q!q2)

  • 对于 q≤2000100%100\%100% 部分

很容易知道在 ppp 进制下,有哪些 ≥q\ge \sqrt{q}q 的数字平方高位是相同的,即某数字代表字符在高位出现次数是易得的。

如果某些数字出现高位的次数相同,就全排列匹配搜索,否则唯一就可以确定字符和数字的匹配。

时间复杂度未知——只是认为这样可以。


solution

000 对应字符很好找。

然后对于 1∼q−11\sim q-11q1 的每个元素 iii,其在乘法表中,对应的十位一定是 0∼i−10\sim i-10i1,一共是出现了 iii 个不同的数字。

直接统计十位的个数,然后匹配即可。

时间复杂度 O(n2)O(n^2)O(n2)

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <queue>
#include <map>#define N 4005
#define M 15
#define mod 1000000007
#define mod2 100000000
#define ll long long
#define maxi(a,b) (a)>(b)? (a) : (b)
#define mini(a,b) (a)<(b)? (a) : (b)using namespace std;int cnt;
int p;
int i, j;
int a[N][N];
int c[N][N];
int cc[N];
int ans[N], pp[N];int main() {freopen("multiplication.in", "r", stdin);freopen("multiplication.out", "w", stdout);cnt = 1;scanf("%d", &p);for (i = 0; i < p; i++) {for (j = 1; j <= p; j++) {scanf("%d", &a[i][2 * j - 1]);cc[ a[i][2 * j - 1] ]++;scanf("%d", &a[i][2 * j]);cc[ a[i][2 * j] ]++;}}int ma = cc[0];int index = 0;for (i = 0; i < p; i++) {if (cc[i] > ma) {ma = cc[i];index = i;}}ans[0] = index;memset(cc, 0, sizeof(cc));for (i = 0; i < p; i++) {for (j = 1; j <= p; j++) {if (c[i][ a[i][2 * j - 1] ] == 0) {c[i][ a[i][2 * j - 1] ] = 1;cc[i]++;}}if (cc[i] == 1) {if (ans[0] != i)ans[1] = i;} else {ans[ cc[i] ] = i;}}for (int i = 0; i < p; i++)pp[ans[i]] = i;for (i = 0; i < p; i++)printf("%d%c", pp[i], " \n"[i == p - 1]);
}

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

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

相关文章

CF1553H XOR and Distance (Trie)

解析 有的时候&#xff0c;看起来是暴力的东西再稍微想想性质就是正解了。 本题有两种做法&#xff0c;一种使用了trie树&#xff0c;一种没有。但本质是一样的&#xff0c;只是trie树把我们的所求显性的表达了出来。 考虑trie树暴力怎么做。 对于一个特定的 xxx 走到一个结…

C#机器学习之判断日报是否合格

原文作者&#xff1a;心莱科技肖鑫简单来说机器学习的核心步骤在于“获取学习数据&#xff1b;选择机器算法&#xff1b;定型模型&#xff1b;评估模型&#xff0c;预测模型结果”&#xff0c;下面本人就以判断日报内容是否合格为例为大家简单的阐述一下C#的机器学习。第一步&a…

【无码专区4】幸运数字4(折半搜索+计数+结论)

因为只有std&#xff0c;没有自我实现&#xff0c;所以是无码专区 主要是为了训练思维能力 solution才是dls正解&#xff0c;但是因为只有潦草几句&#xff0c;所以大部分会有我自己基于正解上面的算法实现过程&#xff0c;可能选择的算法跟std中dls的实现不太一样。 std可能…

P1288 取数游戏II

P1288 取数游戏II 题意&#xff1a; 一个环&#xff0c;由边权&#xff0c;硬币一开始在一个点上&#xff0c;两个人轮流操作&#xff0c;每次操作向左或右移动&#xff0c;每次移动必须将边权减少到非负整数&#xff0c;如果原本是0则不能走&#xff0c;当不能走动时&#x…

CF1616F Tricolor Triangles(构造、高斯消元)

解析 关键性质&#xff1a;三元环合法等价于边权和模3等于0。 还有一个常识&#xff1a;三元环的级别是O(mm)O(m\sqrt m)O(mm​)。 证明&#xff1a; 三个点度数都大于 m\sqrt mm​ 的点不超过Cm3mmC_{\sqrt m}^3m\sqrt mCm​3​mm​ 个。 如果含有度数小于m\sqrt mm​ 的点&am…

SignalR2结合ujtopo实现拓扑图动态变化

上一篇文章基于jTopo的拓扑图设计工具库ujtopo&#xff0c;介绍了拓扑设计工具&#xff0c;这一篇我们使用SignalR2结合ujtopo实现拓扑图的动态变化。仅仅作为演示&#xff0c;之前的文章SignalR2简易数据看板演示&#xff0c;用一个小的示例演示了SignalR作为数据看板的用法&a…

树的同构模板题(法1.最小表示法+法2.树哈希)

树的同构problemsolutioncodesolutioncodeproblem 模板题 solution Ⅰ. 最小表示法 将树转化为 0/10/10/1 括号序列&#xff1a;从根开始 dfs\text{dfs}dfs&#xff0c;000 就往下遍历一个儿子&#xff0c;111 就返回&#xff0c;构成一个 2n2\times n2n 的括号序列。 显然…

CF917B MADMAX

CF917B MADMAX 题意&#xff1a; Alice和Bob有一个n个点m条边的DAG&#xff0c;每条边上有一个小写英文字母表示权值&#xff0c;Alice和Bob每人有一个棋子&#xff0c;每个人放在一个节点上&#xff08;可以放在同一个节点上&#xff09;。 第一轮Alice可以沿一条边把棋子移…

CF1534F:Falling Sand(tarjan、贪心、dp)

解析 本题做的过程大概是&#xff1a;到了正解门口决定回头&#xff0c;绕了地球一圈最后从另一边走到正解了… 我的分析&#xff1a; 首先 easy version 很简单&#xff0c;如果从一列最大值可以走到另一列最大值&#xff0c;那么后者就没用了。缩完点所有的零度点就是答案。…

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

来源&#xff1a;https://www.cnblogs.com/7tiny/p/10493805.html【前言】Ocelot是一个用.NET Core实现并且开源的API网关&#xff0c;它功能强大&#xff0c;包括了&#xff1a;路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterf…

CF464E The Classic Problem(主席树+哈希+最短路)

CF464E The Classic Problemproblemsolutioncodeproblem 题目链接 solution 经典题。 本题很特别的是每条边的边权都是 222 的幂&#xff0c;而且数据读入的是指数。 所以可以将路径权值看作一个二进制串&#xff0c;每加一条边就是对应二进制位 111&#xff0c;当然会有相…

CF1192B Dynamic Diameter(LCT)

Foreword\text{Foreword}Foreword zhengrunzhe 大佬的矩阵做法过于神奇&#xff0c;蒟蒻无法理解… 欧拉序的做法确实非常巧妙&#xff0c;但我也想不到这么神仙的做法… 提供一种可能简单一些的 LCT 做法。 由于本人 LCT 无法像大佬那么神&#xff0c;讲的会比较详细一些&…

博弈论(基础概念+例题)

博弈论(b站视频) 文章目录一些概念以Nim游戏为例Nim游戏介绍定义 必败/必胜局面必败/必胜局面的判定引理Nim游戏判定引理的等价命题有向图游戏对判定引理的数学描述-Sg函数有向图游戏的和题目&#xff1a;[有向图游戏][有向图游戏的和][构造/转化类]一些概念 以Nim游戏为例 Ni…

.NET Core 3.0 linux 部署小贴士

dotnet core 3.0 目前还是测试版&#xff0c;在linux下安装 sdk 需要有一些注意事项1.下载urlhttps://dotnet.microsoft.com/download/thank-you/dotnet-sdk-3.0.100-preview-009812-linux-x64-binaries2.安装指令mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.0.100…

莓良心(第二类斯特林数)

莓良心problemsolutioncodeproblem 莓在执行任务时&#xff0c;收集到了 nnn 份岩浆能源&#xff0c;其中第 iii 份的能量值是 wiw_iwi​ &#xff0c;她 决定将它们分成恰好 kkk 组带回基地&#xff0c;每一组都要有至少 111 份能源。 每一组能源会对运输设备产生负荷值&…

CF1654E Arithmetic Operations(根号分治)

解析 降智谔谔题。 明明都把做法大块想出来&#xff0c;最后很沙雕的一步掉牛角尖里了… 无能狂怒之下写了一发实际复杂度 n2n^2n2 的代码。 不过暴力艹题还是很爽的。 可能确实不太好卡吧&#xff0c;让我自己构造我是卡不掉。 更何况CF应该不会有人和我一样在如此沙雕的地方…

P2575 高手过招

P2575 高手过招 题意&#xff1a; AKN玩游戏玩累了&#xff0c;于是他开始和同伴下棋了&#xff0c;玩的是跳棋&#xff01;对手是wwx&#xff01;这两位上古神遇在一起下棋&#xff0c;使得棋局变得玄幻莫测&#xff0c;高手过招&#xff0c;必有一赢&#xff0c;他们都将用…

PuppeteerSharp: 更友好的 Headless Chrome C# API

前端就有了对 headless 浏览器的需求&#xff0c;最多的应用场景有两个UI 自动化测试&#xff1a;摆脱手工浏览点击页面确认功能模式爬虫&#xff1a;解决页面内容异步加载等问题也就有了很多杰出的实现&#xff0c;前端经常使用的莫过于 PhantomJS 和 selenium-webdriver&…

尽梨了(贪心+dp)

尽梨了problemsolutioncodeproblem 丰之崎学园附近共有 nnn 个商店&#xff0c;在时刻 000 时&#xff0c;英梨梨从学园出发开始购物。 从学园走到任意一个商店&#xff0c;或从一个商店走到另一个商店需要 111 单位时间。 如果英梨梨在时刻 ttt 到达了商店 iii &#xff0c…

CF1612G Max Sum Array

解析 被蓝题虐了。&#xff08;悲 确实不太难&#xff0c;就是没往那边想。 考虑如果某个值的下标分别位 i1,i2,...,ini_1,i_2,...,i_ni1​,i2​,...,in​ 那么如何计算贡献。 每一个下标和前面统计时作为被减数&#xff0c;和后面统计时作为减数&#xff0c;所以 iki_kik​ …