首页 > 编程语言 >算法刷题记录:素数中的等差数列

算法刷题记录:素数中的等差数列

时间:2023-06-03 17:55:15浏览次数:48  
标签:ac int 素数 https primes 等差数列 刷题

题目链接

https://ac.nowcoder.com/acm/contest/19859/I

题目分析

模拟!模拟!模拟!下标要计算好。
自己的思路是放发现两个相等的差时,说明至少可以输出了,也就是合法情况,
然后用指针R往后扩展。我选择的R是闭区间的,即[L,R]的区间已经看过了,所以i可以直接从i+1开始看。
所以R赋值给i后,i自动加1。

AC代码

// Problem: 素数中的等差数列
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/19859/I
// Memory Limit: 524288 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <iostream>

using namespace std;

const int N = 100050;

int l, r;
int st[N], primes[N], cnt;

int main()
{
    for (int i = 2; i <= N; ++ i)
		if (!st[i])
		{
			primes[cnt ++ ] = i;
			for (int j = i + i; j <= N; j += i)
				st[j] = true;
		}
		
	cin >> l >> r;
	for (int i = 0; i < cnt; ++ i)
	{
		if (primes[i] < l) continue;
		if (primes[i] > r) break;
		// 说明有一组相等的
		if (primes[i + 1] - primes[i] == primes[i + 2] - primes[i + 1])
		{
			int L = i, R = i + 2;
			// 判断R是否可以往后扩大
			while (primes[R] - primes[R - 1] == primes[R + 1] - primes[R]) ++ R;
			for (int j = L; j <= R; ++ j) cout << primes[j] << ' ';
			cout << endl;
			i = R;
		}
	}
}

标签:ac,int,素数,https,primes,等差数列,刷题
From: https://www.cnblogs.com/ClockParadox43/p/17454316.html

相关文章

  • 素数
    一、问题描述: 二、设计思路:  三、程序流程图:   四、代码实现:#include<stdio.h>#defineN1000#include<math.h>intmain(){intstart,end;intflag=1;intcount=0;scanf("%d%d",&start,&end);for(inti=start;i<=end;......
  • 算法刷题记录:[NOIP1999]回文数
    题目链接https://ac.nowcoder.com/acm/contest/19859/G题目分析高精度相加+进制转换+判断回文的模拟题。AC代码//Problem:[NOIP1999]回文数//Contest:NowCoder//URL:https://ac.nowcoder.com/acm/contest/19859/G//MemoryLimit:262144MB//TimeLimit:20......
  • 算法刷题记录:素数五五
    题目链接https://ac.nowcoder.com/acm/contest/19859/E题目分析一道找规律的题,我们注意33,当33的长度一样,我们只要无脑添加4和8即可。4和8的关系与33的关系:有n个33,就有n-1个4或8。在此基础之上,因为会出现a和b的33长度不相同的情况,这时候我们只要统计a和b的33个数的差就行了......
  • 等差数列生成器
      1classArithmeticProgression:23def__init__(self,begin,step,end=None):4self.begin=begin5self.end=end6self.step=step789def__iter__(self):10result=typ......
  • 2023-06-03 刷题
    练习英文描述算法56.合并区间-力扣(LeetCode)[mid,非常好展示思路]分析:Firstsorttheintervalsbystarttime,sothatwecaneasilyfindwhichintervalscanbemergedbycheckingintervalsfromlefttoright.Useoneexampletodemotheprocess.(e.g.use......
  • 密码工程-大素数
    密码工程-大素数在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务利大整数库(GMP或者OpenSSL),参考《密码工程》p113伪代码实现GenerateLargePrime函数在测试代码中产生一个在范围l=2^255至u=2^256-1内的素数。用OpenSSL验证你产生的素数是不是正确提交代码......
  • 2023年5月刷题记录
    2023年5月1日leetcode1376.通知所有员工所需的时间链接地址:https://leetcode.cn/problems/time-needed-to-inform-all-employees/题意:公司里有n名员工,每个员工的ID都是独一无二的,编号从0到n-1。公司的总负责人通过headID进行标识。在manager数组中,每个员工都......
  • 算法刷题记录:日历中的数字
    题目链接https://ac.nowcoder.com/acm/contest/19859/B题目分析很简单的一道数位统计的题目其中年和月是乘法原理。(固定住年和月,枚举该月有几天,所以是乘法原理)当x=0并且month<10时,月需要特判一位数的情况,是加法原理日是加法原理AC代码//Problem:日历中的数字//Cont......
  • 密码工程-大素数
    代码:#include<gmp.h>#include<stdio.h>#include<stdlib.h>#include<time.h>//GeneratearandomlargeprimenumberbetweenlowerandupperboundsvoidGenerateLargePrime(mpz_tp,mpz_tl,mpz_tu){ mpz_ttemp; mpz_init(temp); gmp_......
  • 密码工程-大素数
    任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务利大整数库(GMP或者OpenSSL),参考《密码工程》p113伪代码实现GenerateLargePrime函数(10‘)在测试代码中产生一个在范围l=2^255至u=2^256-1内的素数。(5‘)用OpenSSL验证你产生的素数是不是正确(5’)提交代......