题解 | #漂亮数#

漂亮数

https://ac.nowcoder.com/acm/contest/11214/H

H. 漂亮数

线性筛加打表.

如果处理出以内,每个数是否是漂亮数,然后做个前缀和,就可以回答询问了.

怎么处理呢? 线性筛的过程中标记一下就可以了.

#include <bits/stdc++.h>
using namespace std;
#ifdef BACKLIGHT
#include "debug.h"
#else
#define debug(...)
#endif

const int N = 1e8 + 5;

int pcnt, p[N], c[N];
bool is[N];
void euler_seive(int n = N - 1) {
  pcnt = 0;
  for (int i = 0; i <= n; ++i) is[i] = true;
  for (int i = 2; i <= n; ++i) {
    if (is[i]) p[pcnt++] = i;
    for (int j = 0; j < pcnt; ++j) {
      int64_t nxt = 1ll * p[j] * i;
      if (nxt > n) break;
      is[nxt] = false;
      if (is[i]) c[nxt] = 1;
      if (i % p[j] == 0) break;
    }
  }
  for (int i = 1; i < N; ++i) c[i] += c[i - 1];
}

void solve(int Case) {
  int l, r;
  cin >> l >> r;
  cout << c[r] - c[l - 1] << endl;
}

int main() {
#ifdef BACKLIGHT
  freopen("a.in", "r", stdin);
#endif
  euler_seive();
  int T = 1;
  scanf("%d", &T);
  for (int t = 1; t <= T; ++t) solve(t);
  return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
机械打工仔:不管啥专业,找工作改简历的第一课先把你那排版改了,简历上不要写个人简历四个字,找你要简历的谁不知道这个是简历?而且还占那么多空间,直接把自己名字和基础信息写上面,整体字体大一些。 还有这种经典两页简历一页大空白,导出PDF的时候多了一页几乎全是白的你自己看着不难受吗随手的事为啥不能改掉呢,这是态度问题,你试想一下你是HR你打开简历看到格式都没调整过会是什么感受?你自己都不重视你的简历,HR更不会在意。 然后内容你那个做两年咖啡就别往里写了,简历在精不在多,你在往你的简历里打字的时候就要想好这东西对你要找的工作有没有帮助。自我评价写一行就行了,不如给专业技能单开一栏。核心课程均分90这个真别写了,把你上过的有用的专业课列出来也行。有很多地方废话很多的精炼一下,比如你校内项目第一个写的那些,全然没有重点。 好好修改一下,我看你内容也挺优秀的,别被一个随便做的简历耽误了,我一个同专业的打工人看了都揪心更别说一天看几百份简历的HR
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务