http://acm.timus.ru/problem.aspx?space=1&num=2070

题意:A认为如果某个数为质数的话,该数字是有趣的。B认为如果某个数它分解得到的因子数目是素数的话,那么该数字是有趣的。

现在问[L,R]里面有多少个数是同时满足这两个条件或者同时不满足这两个条件的数。

简化题意就是,用[L,R]里面的总数 - 是一个合数并且其因子数是素数的数目。

一开始想,如果是平方的话,那么因子数必定是一个奇数,但是奇数里面的素数要怎么找就不知道了。想到后面离正解越走越远。

正解是这样的:假设p是一个素数,对于p^k,如果k+1是一个素数的话,那么p^k的因子数就是一个素数。

找规律:4 = 2^2的因子:1、2、4。

8 = 2^3的因子:1、2、4、8。

16 = 2^4的因子:1、2、4、8、16。

从这三个例子可以发现对于一个p^k,其因子数为k+1。举3、5、7等例子也是一样的结果。

 #include <bits/stdc++.h>
using namespace std;
#define N 1000010
typedef long long LL;
int num, prime[N], is[N];
// 一个数是素数的k次方并且k+1是素数 void biao() {
int n = ;
for(int i = ; i <= n; i++) is[i] = ;
is[] = is[] = num = ;
for(int i = ; i <= n; i++) {
if(!is[i]) continue;
prime[++num] = i;
for(int j = * i; j <= n; j += i)
is[j] = ;
}
} LL solve(LL n) {
LL sum, cnt = ;
for(int i = ; i <= num; i++) {
sum = prime[i];
int q = ;
while(true) {
q++; sum *= prime[i];
if(sum > n) break;
if(is[q + ]) cnt++;
}
}
return n - cnt;
} int main() {
LL L, R; biao();
while(cin >> L >> R) cout << solve(R) - solve(L - ) << endl;
return ;
}

Ural 2070:Interesting Numbers(思维)的更多相关文章

  1. ural 2070. Interesting Numbers

    2070. Interesting Numbers Time limit: 2.0 secondMemory limit: 64 MB Nikolay and Asya investigate int ...

  2. URAL 2070 Interesting Numbers (找规律)

    题意:在[L, R]之间求:x是个素数,因子个数是素数,同时满足两个条件,或者同时不满足两个条件的数的个数. 析:很明显所有的素数,因数都是2,是素数,所以我们只要算不是素数但因子是素数的数目就好,然 ...

  3. 【线性筛】【筛法求素数】【约数个数定理】URAL - 2070 - Interesting Numbers

    素数必然符合题意. 对于合数,如若它是某个素数x的k次方(k为某个素数y减去1),一定不符合题意.只需找出这些数. 由约数个数定理,其他合数一定符合题意. 就从小到大枚举素数,然后把它的素数-1次方都 ...

  4. 递推DP URAL 1586 Threeprime Numbers

    题目传送门 /* 题意:n位数字,任意连续的三位数字组成的数字是素数,这样的n位数有多少个 最优子结构:考虑3位数的数字,可以枚举出来,第4位是和第3位,第2位组成的数字判断是否是素数 所以,dp[i ...

  5. 递推DP URAL 1009 K-based Numbers

    题目传送门 题意:n位数,k进制,求个数分析:dp[i][j] 表示i位数,当前数字为j的个数:若j==0,不加dp[i-1][0]; 代码1: #include <cstdio> #in ...

  6. 算法笔记_093:蓝桥杯练习 Problem S4: Interesting Numbers 加强版(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 Problem Description We call a number interesting, if and only if: 1. Its d ...

  7. java实现 蓝桥杯 算法提高 Problem S4: Interesting Numbers 加强版

    1 问题描述 Problem Description We call a number interesting, if and only if: 1. Its digits consists of o ...

  8. URAL 2031. Overturned Numbers (枚举)

    2031. Overturned Numbers Time limit: 1.0 second Memory limit: 64 MB Little Pierre was surfing the In ...

  9. ural 1150. Page Numbers

    1150. Page Numbers Time limit: 1.0 secondMemory limit: 64 MB John Smith has decided to number the pa ...

随机推荐

  1. postgresql && .net core 使用空间数据

    这里主要讲遇到的一些报错 增删改查 && 计算部分基本和sql server的空间数据操作一毛一样,感谢微软大大的倾情支持,直接看demo即可(- ̄▽ ̄)- 前往sql server ...

  2. Math.Round四舍五入说明

    Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法, 如何找回四舍五入法? Math.Round默认采用的不是四舍五入法, 而是四舍六入的银行家算法,  也就是四舍六入五考虑,五 ...

  3. 利用winIO3.0进行windows10 64bit端口读取

    一.winIO介绍 WinIO程序库允许在32位的Windows应用程序中直接对I/O端口和物理内存进行存取操作.通过使用一种内核模式的设备驱动器和其它几种底层编程技巧,它绕过了Windows系统的保 ...

  4. 动态加载并执行Win32可执行程序

    本文所贴出的PoC代码将告诉你如何通过CreateProcess创建一个傀儡进程(称之为可执行程序A),并把dwCreationFlags设置为CREATE_SUSPENDED,然后把另一个可执行程序 ...

  5. 给Delphi程序添加版本信息(EXE和Dll)

    我们在用Delphi编译完程序,准备发布产品时,总希望随产品发布个性信息以标示产品的来源以及开发者等信息,就像windows的程序一样,使我们一看属性就知道他是微软的产品,这些在Delphi中是如何实 ...

  6. canvas——粒子系统(1)

    这个动画在很早之前就见过,当时就没迷住了.最近在学canavs动画,动手实现了一下.代码在这里.展示效果在这里. 这属于粒子系统的一种,粒子系统就是需要管理一堆粒子嘛,动画实现的关键在于,遍历这些粒子 ...

  7. PySide——Python图形化界面入门教程(六)

    PySide——Python图形化界面入门教程(六) ——QListView和QStandardItemModel 翻译自:http://pythoncentral.io/pyside-pyqt-tu ...

  8. 搭建svn服务器&服务器客户端使用笔记

    参考借鉴文章:http://www.cnblogs.com/vijayfly/p/5711962.html 之前尝试着用git管理公司代码,但被一个问题困惑了很久无法解决,那就是git该如何只pull ...

  9. Delphi-网络编程-第一个网络方面作品(UDP聊天程序)

    其实这不算是一个聊天程序,因为还不能实现双方互发信息,只有一方能发信息,呵呵 我以后再改进吧.... 服务端代码: unit Unit1;   interface   uses   Windows, ...

  10. 智能合约开发——以太坊 DApp 实现 购买通证token

    合约的buy()方法用于提供购买股票的接口.注意关键字payable,有了它买股票的人才可以付钱给你. 接收钱没有比这个再简单的了! function buy() payable public ret ...