Ural 2070:Interesting Numbers(思维)
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(思维)的更多相关文章
- ural 2070. Interesting Numbers
2070. Interesting Numbers Time limit: 2.0 secondMemory limit: 64 MB Nikolay and Asya investigate int ...
- URAL 2070 Interesting Numbers (找规律)
题意:在[L, R]之间求:x是个素数,因子个数是素数,同时满足两个条件,或者同时不满足两个条件的数的个数. 析:很明显所有的素数,因数都是2,是素数,所以我们只要算不是素数但因子是素数的数目就好,然 ...
- 【线性筛】【筛法求素数】【约数个数定理】URAL - 2070 - Interesting Numbers
素数必然符合题意. 对于合数,如若它是某个素数x的k次方(k为某个素数y减去1),一定不符合题意.只需找出这些数. 由约数个数定理,其他合数一定符合题意. 就从小到大枚举素数,然后把它的素数-1次方都 ...
- 递推DP URAL 1586 Threeprime Numbers
题目传送门 /* 题意:n位数字,任意连续的三位数字组成的数字是素数,这样的n位数有多少个 最优子结构:考虑3位数的数字,可以枚举出来,第4位是和第3位,第2位组成的数字判断是否是素数 所以,dp[i ...
- 递推DP URAL 1009 K-based Numbers
题目传送门 题意:n位数,k进制,求个数分析:dp[i][j] 表示i位数,当前数字为j的个数:若j==0,不加dp[i-1][0]; 代码1: #include <cstdio> #in ...
- 算法笔记_093:蓝桥杯练习 Problem S4: Interesting Numbers 加强版(Java)
目录 1 问题描述 2 解决方案 1 问题描述 Problem Description We call a number interesting, if and only if: 1. Its d ...
- java实现 蓝桥杯 算法提高 Problem S4: Interesting Numbers 加强版
1 问题描述 Problem Description We call a number interesting, if and only if: 1. Its digits consists of o ...
- URAL 2031. Overturned Numbers (枚举)
2031. Overturned Numbers Time limit: 1.0 second Memory limit: 64 MB Little Pierre was surfing the In ...
- ural 1150. Page Numbers
1150. Page Numbers Time limit: 1.0 secondMemory limit: 64 MB John Smith has decided to number the pa ...
随机推荐
- html 自制属性
HTML5 允许扩展的(自制的)属性,以 data- 开头 <label id="id0" data-value="0">0</label&g ...
- jquery 点谁谁哭-隐式迭代
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- Socket 专题
Socket小白篇-附加TCP/UDP简介 Socket 网络通信的要素 TCP和UDP Socket的通信流程图 1.Socket 什么是Socket Socket:又称作是套接字,网络上的两个程序 ...
- sqlserver检查sql执行时间
set statistics profile onset statistics io onset statistics time onGO select * from mytable; goset s ...
- Android零基础入门第14节:使用高速Genymotion,跨入火箭时代
原文:Android零基础入门第14节:使用高速Genymotion,跨入火箭时代 无论是使用Eclipse,还是Android Studio,使用自带的Android模拟器,不仅很费电脑内存,模拟器 ...
- Windows下配置Redis,并修改密码
原文:Windows下配置Redis,并修改密码 Windows下配置Redis,并修改密码 下载 Redis Windows版本的GitHub链接,直接下载zip文件解压到指定文件夹下或者下载msi ...
- 让您的应用兼容 Android Oreo
不知不觉Android Oreo已经发布几个月时间了,你的应用开始使用最新平台了吗?在应用迁移过程中是否遇到了一些棘手问题?你的Android应用兼容Oreo如何呢? 我们应该都知道,每一次重大升级, ...
- 笔记:认识.NET平台
认识.NET平台先了解一堆技术术语和缩写 http://www.cnblogs.com/dbycl/p/6419456.html 天生不跨平台的.NET Framework 2.大家都来开发新语言 3 ...
- 使用MinGW编译Boost
1.下载Boost(http://www.boost.org) 我目前用的是1.61.0版本 2.将MinGW下的bin目录完整路径设置到系统环境变量Path中,保证cmd命令行能找到gcc,g++等 ...
- LockWindowUpdate的函数的用法(不忽略消息,只是暂时不响应,但WM_SETREDRAW根本不接受重绘消息)
Application.ProcessMessages;LockWindowUpdate(Self.Handle); //锁住当前窗口 LockWindowUpdate(0)//解除锁定窗口 Loc ...