CF1916D Mathematical Problem

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

去洛谷看我的博客

思路

很不错的人类智慧题。

拿到以后,完全没有思路,看到数据范围,感觉是什么 n 2 log ⁡ n n^2\log n n2logn 的逆天做法,但是又完全没思路,看后面的题感觉没希望,就在这道题死磕。

先打了个暴力程序,发现平方数太多,没什么规律,就拿了个 map 统计一下那些出现数字方案拥有的平方数比较多

程序如下:

#include<bits/stdc++.h>
using namespace std;
multiset<int>s;
map<multiset<int>,int>mp;
int main()
{
	for(int i=1;i<=200000;++i)
	{
		long long k=1ll*i*i;
		if(k<100000000) continue;//此程序是九位数的情况,想试其他情况的就改这里的值即可
		if(k>999999999) break;
		while(k) s.insert(k%10),k/=10;
		++mp[s],s.clear();
	}
	for(auto i:mp)
	{
		if(i.second>=9)//这里也要改
		{
			for(auto j:i.first)
			{
				cout<<j<<" ";
			}
			puts("");
		}
	}
	return 0;
}

先试一试五位数的情况,发现下面的数字组合都可以存在五个以上的平方数,除了样例给的还有一组。

  • 0 0 1 6 9
  • 1 3 4 6 8

再试一试七位数的情况,发现符合条件的数字组合更多了。

  • 0 0 0 0 1 6 9
  • 0 0 1 3 4 6 8
  • 0 1 2 4 5 6 9
  • 0 1 4 5 6 7 8
  • 1 2 3 4 4 5 6
  • 1 2 3 4 4 8 9

一看,发现了一个很重要的规律,都有 0   ⋯   0   1   6   9 0~ \cdots ~0 ~1 ~6 ~9 0 ⋯ 0 1 6 9。

所以猜测所有情况都可以由若干个 0 0 0 和 1   6   9 1~6~9 1 6 9 构成。

再试一试九位数,发现也是如此。

于是,改了改暴力程序,让程序输出符合条件的平方数,如下:

#include<bits/stdc++.h>
using namespace std;
multiset<int>s;
map<multiset<int>,int>mp;
int main()
{
	multiset<int>tmp;
	tmp.insert(0),tmp.insert(0),tmp.insert(0),tmp.insert(0),tmp.insert(0),tmp.insert(0),tmp.insert(1),tmp.insert(6),tmp.insert(9);//同样是九位数的程序,其他情况注意更改参数
	for(int i=1;i<=200000;++i)
	{
		long long k=1ll*i*i;
		if(k<100000000) continue;
		if(k>999999999) break;
		while(k) s.insert(k%10),k/=10;
		if(s==tmp) printf("%lld\n",1ll*i*i);
		s.clear();
	}
	return 0;
}

先试一试五位数的,发现程序给的是:

10609
16900
19600
61009
90601
96100

研究了一下,发现首先又 1690 ⋯ 1690\cdots 1690⋯、 1960 ⋯ 1960\cdots 1960⋯ 和 9610 ⋯ 9610\cdots 9610⋯,这三个很显然,都是 169 169 169、 196 196 196 和 961 961 961 乘以了 1 0 k 10^k 10k,其中 k k k 为偶数,所以一定是平方数。

剩下的就是 10 ⋯ 60 ⋯ 90 ⋯ 10\cdots60\cdots90\cdots 10⋯60⋯90⋯,也就是 169 169 169 的 1 1 1 与 6 6 6 之间和 6 6 6 与 9 9 9 之间插入相同数量的零,再在后面放若干个零构成的,首先因为插入的零是偶数,并且总数字个数是奇数,再加上有 169 169 169 三个数字,所以后面的零一定是偶数个,所以后面加的一定正确,只需要验证 10 ⋯ 60 ⋯ 9 10\cdots60\cdots9 10⋯60⋯9 是否一定正确即可,发现就是 10 ⋯ 3 10\cdots3 10⋯3 的平方,所以一定正确。

那么同理 961 961 961 的 1 1 1 与 6 6 6 之间和 6 6 6 与 9 9 9 之间插入相同数量的零,再在后面放若干个零构成的数也一定是平方数,也是正确的。

使用暴力程序在七位数和九位数验证,发现是正确的。

再计算一下我们发现了多少个平方数了,在其中插入的零可以是 [ 0 , n − 1 2 − 1 ] [0,\frac{n-1}2-1] [0,2n−1​−1] 个,一共有 n − 1 2 \frac{n-1}2 2n−1​ 个, 169 169 169 和 961 961 961都可以,一共有 n − 1 n-1 n−1 个,再加上 1960 ⋯ 1960\cdots 1960⋯ 的一个,刚好 n n n 个。

其实发现还有形如 61009 61009 61009 之类的数也满足条件,但是我们已经不需要了。

根据上面发现的构造方案可以很轻松的写出程序。

AC code

#include<bits/stdc++.h>
using namespace std;
long long T,n,a,sum,num;
int main()
{
	scanf("%lld",&T);
	while(T--)
	{
		scanf("%lld",&n);
		if(n==1){puts("1");continue;}//注意特判n=1
		printf("169");
		for(int i=4;i<=n;++i) printf("0");
		puts("");
		printf("961");
		for(int i=4;i<=n;++i) printf("0");
		puts("");
		printf("196");
		for(int i=4;i<=n;++i) printf("0");
		puts("");
		for(int i=1;i<n/2;++i)
		{
			printf("1");
			for(int j=1;j<=i;++j) printf("0");
			printf("6");
			for(int j=1;j<=i;++j) printf("0");
			printf("9");
			for(int j=3+2*i;j<n;++j) printf("0");
			puts("");
			printf("9");
			for(int j=1;j<=i;++j) printf("0");
			printf("6");
			for(int j=1;j<=i;++j) printf("0");
			printf("1");
			for(int j=3+2*i;j<n;++j) printf("0");
			puts("");
		}
	}
	return 0;
}
【Unity+HoloLens2】从0开始在HoloLens2部署MR工程 HoloLens2部署的权威教程在微软的官方文档中,但有些问题其实官方文档并没有列出,所以在实际开发过程中如果遇到bug,就需要自身或者前人的经验去解决。比如:对于Hololens2来说,在VS中需选择ARM64而不是x86。部署需要有良好的网速;工程打包出来的文件路径和工程路径有关联,如果这两个路径不匹配,部署就会失败。部署后打不开可能是因为Unity中未添加需要部署的场景,在Build Settings中点击Add open Scenes。... 阅读详情

相关推荐

Axure RP 9在Windows 11环境下的高效安装与配置指南

本文提供Axure RP 9在Windows 11系统下的详细安装步骤与配置指南。针对Win11安全特性,从获取官方安装资源、调整系统权限,到定制化安装路径、精准汉化及性能优化,系统性地解决了安装闪退、汉化失败、运行卡顿等常见问题,确保用户获得稳定流畅的原型设计体验。

mango的博客 480

Codeforces Bye 2023! - D - Mathematical Problem - 题解

给你一个多数 n ,你需要找出 n 个不同的数,它们都是整数的平方。解法2在暴力求解(n

weixin_73936404的博客 630

GD32F303驱动WS2812B灯带:用TIMER+PWM+DMA解放CPU,实现流畅灯效(附完整代码)

本文详细介绍了基于GD32F303的TIMER+PWM+DMA全自动控制方案,用于高效驱动WS2812B灯带。通过硬件外设协同工作,该方案不仅解放了CPU资源,还能实现复杂的灯光效果,如渐变、流水等。文章提供了完整的代码实现和性能优化技巧,适合嵌入式开发者参考。

weixin_42561143的博客 379

Mathematical Problem

Good Bye 2023 D. Mathematical Problem

qq_45809243的博客 1287

基于大模型的JMeter日志智能分析服务化实践

在软件性能测试领域,日志分析是定位系统瓶颈、评估稳定性的关键环节。传统基于规则或正则表达式的分析方法,在面对格式多变、上下文关联复杂的海量日志时,往往效率低下且难以深入。大语言模型(LLM)凭借其强大的自然语言理解与推理能力,为这一挑战提供了新的解决方案。其技术价值在于能够自动化地从非结构化文本中提取语义信息、关联分散的上下文,并生成可操作的根因分析与优化建议,从而将工程师从繁琐的日志筛查中解放出来,显著提升问题诊断的深度与效率。这一技术可广泛应用于自动化测试报告生成、实时监控预警、脚本调试辅助等工程实践场

weixin_28839549的博客 338

避坑指南:CentOS7.9安装Python3.8.16后yum报错的快速修复方法

本文详细解析了在CentOS7.9系统安装Python3.8.16后导致yum报错的原因,并提供了快速修复方法。通过修改yum配置文件指向Python2解释器,以及使用alternatives工具管理多版本Python,有效解决兼容性问题。同时推荐使用虚拟环境隔离开发环境,避免影响系统稳定性。

weixin_26908317的博客 493

Codeforces practice C++ 2024/9/11 - 2024/9/18

给一颗树,规定编号为1的节点为根节点,每个节点上初始会有一个值,你每次可以进行操作,这个操作是选定一个非叶子节点的节点,给此节点上的值加一,此节点除了该节点外的子树种的节点上的值均减去1。规定每次操作后树上所有节点的值非负。除了最后一个n+1位置处的元素由第三种操作产生,其他位置上的元素怎么样变成b数组花费的步骤代价都是恒定的。所以主要就是minimize a数组放到n+1位置上的元素变成b数组n+1位置上的值所花费的步骤。

m0_73579990的博客 832

基于DBSCAN聚类算法的超像素实时分割

Real-Time Superpixel Segmentation by DBSCAN Clustering Algorithm 摘要 在本文中,我们提出了一种基于密度的带噪声应用空间聚类(DBSCAN)算法的50帧/秒实时图像超像素分割方法。为了降低超像素算法的计算量,我们采用了一种快速的两步框架。在第一个聚类阶段,使用具有颜色相似性和几何约束的DBSCAN算法对像素进行快速聚类,然后在第二个合并阶段,通过颜色和空间特征定义的距离度量,将小簇按其邻域合并为超像素。为了在这两个步骤中获得更好的超像素,定义了

yttt的博客 3492

CF1916D Mathematical Problem 题解

的时候我们可以把以上每个数后面加两个0,或者相邻数字之间加0。个数的数字相同如(169,961)。个正整数满足都是长度为。的完全平方数,且组成这。注意奇数这个重要性质。

MYJ_aiie的博客 455

工业模型导入Unity实战:从ProE/SolidWorks到实时渲染的完整流程

在工业仿真、数字孪生和VR/AR应用开发中,将高精度工程模型导入实时渲染引擎是一个常见的技术挑战。其核心原理在于参数化工程软件与实时渲染引擎的数据结构差异:前者基于精确的B-rep边界表示和特征树,后者依赖轻量化的三角网格与材质贴图。这一转换的技术价值在于实现工程数据的可视化与交互化,为产品展示、虚拟培训和工厂仿真等应用场景提供基础。通过数据翻译与优化流程,特别是利用3ds Max或Blender作为中转站进行网格优化与UV展开,能够有效解决模型破面、材质丢失和性能问题。本文聚焦于ProE(Creo)和So

weixin_33050117的博客 344

2026滑块验证码终极实战:缺口检测算法+人机轨迹模拟,识别率从60%飙升至95%全方案

**摘要:2026年AIGC技术发展导致传统验证码失效,滑块验证码成为主流防护手段。本文深入分析了传统方案识别率低的原因,并提出多级检测融合和行为拟合优化方案。通过图像预处理优化、三级缺口检测引擎(差分图像法、Hu矩轮廓匹配、YOLOv8n模型兜底)将识别率提升至99.2%。同时针对轨迹模拟环节,设计了包含抖动特征、时间随机性和个体差异的行为模型,使通过率从12%提升至87%。该方案解决了传统方法在缺口定位精度和轨迹真实性方面的核心痛点,为应对新一代验证码风控提供了完整的技术框架。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1898

CF1916D. Mathematical Problem

通过输出,找了找,满足答案的集合里都有这样这个集合{0,1,6,9}。也就是说那么答案一定是由这个集合组成的,即若干0和1,6,9组成的数。我们还可以发现169,196,以及961都是可以平方数,那么我们在末尾添加n-3个0那么也一定是平方数,因为n是奇数。那么我们试试在中间添加相同个数零试试,不难发现10..60..9 一定是可以被10.. ..3平方的。196和961同理;我们前面输出了3种,可以添加0的情况一定有[0,],事实上已经满足n种了。枚举169和961两种。打表看下有满足答案的组成集合。

m0_59954214的博客 352

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 192

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 298

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 561

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 745

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 81

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 207

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 177

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 320

不同的二叉搜索树

互不相同的二叉搜索树的种数,以 j (1<=j<=i)为头节点,左子树是 j-1 个数,右子树就是 i - (j - 1) -1 = i - j个数。所以dp[3] = dp[0] * dp[2] + dp[1] * dp[1] + dp[2] * dp[0]头1 = 左子树0节点 * 右子树2节点,二叉搜索树就是排序树,左子树<根节点<右子树,左右子树也满足左子树<根节点<右子树。头2 = 左子树1节点 * 右子树1节点。所以dp[i] += dp[j-1] * dp[i-j]个节点组成且节点值从。

qq_44721738的博客 150

考拉兹猜想 - 7

本文通过引入虚数单位重构Collatz猜想的迭代逻辑,指出偶数减半与奇数“乘3加1”的过程在虚数坐标下等价于归结操作。关键在于:乘3加1使奇数跃升至偶数,随后持续减半,而虚数单位代表“无限减1”,实现无限向有限的转化。无论初始值如何,减半始终主导,最终归结为4-2-1循环。该视角消解了正向思维中的速度竞争疑虑,证明归结是必然结果。

杨铸人的博客 39

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 398
上一篇: CF1916C Training Before the Olympiad
AuroraWind
博客等级 码龄4年 47粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值