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

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;
	}
}
相关推荐
_深海凉_1 小时前
LeetCode热题100-只出现一次的数字
算法·leetcode·职场和发展
旖-旎2 小时前
哈希表(存在重复元素||)(4)
数据结构·c++·算法·leetcode·哈希算法·散列表
無限進步D2 小时前
蓝桥杯赛前刷题
c++·算法·蓝桥杯·竞赛
wfbcg3 小时前
每日算法练习:LeetCode 76. 最小覆盖子串 ✅
算法·leetcode·职场和发展
Via_Neo4 小时前
判断字符串前缀(26年蓝桥杯JAVA B组)
java·职场和发展·蓝桥杯
wangwangmoon_light4 小时前
1.23 LeetCode总结(树)_一般树
算法·leetcode·职场和发展
小肝一下4 小时前
c++从入门到跑路——string类
开发语言·c++·职场和发展·string类
wfbcg4 小时前
每日算法练习:LeetCode 30. 串联所有单词的子串 ✅
算法·leetcode·职场和发展
田梓燊4 小时前
leetcode 48
算法·leetcode·职场和发展
6Hzlia4 小时前
【Hot 100 刷题计划】 LeetCode 169. 多数元素 | C++ 哈希表基础解法
c++·leetcode·散列表