Primes on Interval
AC代碼:
#include?<cstdio>
#include?<cstring>
#include?<iostream>
#include?<algorithm>
using?namespace?std;
const?int?maxn?=?1001000;
#define??inf?(1<<29)
//上面的位運(yùn)算還真心沒(méi)有看懂
//?p[i]?is?i-th?prime's?position
bool?pp[maxn]; //里面保存的是一個(gè)素?cái)?shù)的信息
int?p[maxn]?,?cnt?=?0; //將素?cái)?shù)保留在數(shù)組中間
int?ss[maxn]?,?tt[maxn];//在這里申請(qǐng)了這么多的數(shù)組我就是沒(méi)有看懂了是到底為啥
void?init()?{
????cnt?=?0;
????pp[0]?=?pp[1]?=?1;//前兩個(gè)數(shù)字都是不予考慮的
????tt[0]?=?tt[1]?=?-1;
????for(int?i=2;i<maxn;i++)?{
????????if(!pp[i])?{
????????????p[cnt++]?=?i; //這個(gè)是將素?cái)?shù)保留在表格中間嗎?
????????????for(int?j=i+i;j<maxn;j+=i)?{
????????????????pp[j]?=?true; //這個(gè)是素?cái)?shù)達(dá)標(biāo)
????????????}
????????}
????????tt[i]?=?cnt?-?1;
????}
????for(int?i=0;i<maxn;i++)?{
????????if(!pp[i])?ss[i]?=?tt[i];
????????else?ss[i]?=?tt[i]?+?1;
????}
}
int?main()?{
????init();
????int?a?,?b?,?k;
????while(~scanf("%d%d%d"?,?&a,&b,&k))?{
????????int?s?=?ss[a]?,?t?=?tt[b];
????????int?num?=?t?-?s?+?1;
?????
????????if(num?<?k)?{//先判斷在這個(gè)區(qū)間之中里面的素?cái)?shù)量是否達(dá)到了題目的要求,否則直//接退出
????????????printf("-1\n");
????????????continue;
????????}
????????int?ans?=?0;
????????int?tmp;
????????tmp?=?b?-?p[t-k+1]?+?1;
????????if(tmp?>?ans)?ans?=?tmp;
????????tmp?=?p[s+k-1]?-?a?+?1;
????????if(tmp?>?ans)?ans?=?tmp;
????????for(int?i=s;i+k<=t;i++)?{
????????????tmp?=?p[i+k]?-?p[i];
????????????if(tmp?>?ans)?ans?=?tmp;
????????}
????????printf("%d\n"?,?ans);
????}
????return?0;
}
//本題的主要思路是通過(guò)打表,成功后就可以比較簡(jiǎn)單的得到結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/tianxia2s/p/3871950.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Primes on Interval的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 通用路由封装(GRE)×××配置
- 下一篇: url地址传参中文乱码处理