蓝桥杯备考-----》前缀和+哈希表之连续自然数和

M是2e6级别的,我们如果N平方必然是过不了滴

当然,我们枚举的时候并不需要枚举那么多,我们只需要枚举M的一半儿就行了

我们用前缀和,提前把0下标标记为0 ,如果f[i]刚好是sum的话,就输出1到i

如果f[i]不是sum的话,我们用mp寻找一下有没有 f[i]-sum 的数,如果有的话,我们输出mp[f[i]-sum]+1到i

好的,我们来实现一下代码

cpp 复制代码
#include <iostream>
#include <unordered_map>
using namespace std;
typedef long long ll;
unordered_map <ll,int> mp;
ll sum;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	ll m;cin >> m;
	mp[0]=0;
	for(int i = 1;i<=m/2+1;i++)
	{
		sum+=i;
		if(mp.count(sum-m))
		{
			cout << mp[sum-m] +1 << " " <<i << endl;
		}
		mp[sum]=i;
	}
}
相关推荐
南风知我意9576 小时前
【前端面试2】基础面试(杂项)
前端·面试·职场和发展
YuTaoShao11 小时前
【LeetCode 每日一题】2976. 转换字符串的最小成本 I
算法·leetcode·职场和发展
码农水水12 小时前
得物Java面试被问:消息队列的死信队列和重试机制
java·开发语言·jvm·数据结构·机器学习·面试·职场和发展
测试界的世清13 小时前
金九银十软件测试面试题(800道)
测试工具·面试·职场和发展
YuTaoShao14 小时前
【LeetCode 每日一题】2977. 转换字符串的最小成本 II——(解法一)记忆化搜索
算法·leetcode·职场和发展
阿蔹15 小时前
力扣面试题一 Python
python·算法·leetcode·职场和发展
tod11315 小时前
[特殊字符] LeetCode 哈希表经典三题总结:1、49、128(思路 + 代码 + 模板)
算法·leetcode·职场和发展
代码无bug抓狂人15 小时前
C语言之李白打酒(蓝桥杯省B)
c语言·开发语言·蓝桥杯
码农水水16 小时前
传音Java面试被问:HTTP/2的多路复用和头部压缩实现
java·开发语言·spring boot·后端·http·面试·职场和发展
iAkuya16 小时前
(leetcode)力扣100 56子集(迭代||递归)
算法·leetcode·职场和发展