hdu5297 Y sequence(容斥原理+迭代)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5297
题意:给定整数n和整数r,在1、2、3、4、5.......的序列中删掉能够开2次方的数,3次方的数,4次方的数,.......r次方的数,剩下的数称为Y序列,求Y序列中第n个数是多少。
分析:对于一个数x,假设求出x在Y序列的位置就好办了。
先无论序列中的1,假如r=3,能够开2次方的数有4,9,16,25,36,49,64.....
能够开3次方的数有8,27,64.......
我们把能够开2次方的数的个数减掉,再把能够开3次方的数的个数减掉,会发现减多了(把既能够开2次方又能够开3次方的数减了两次),然如把减多了的补回来,就要把能够开6次方的数的个数加回来,这样就能够想到容斥原理:先将全部的2~r的数里面的素数组合起来(那些有1个以上某个同样的因子的数不用考虑,之前肯定会被减掉),然后枚举这些数,看这些数的质因子为奇数和还是偶数个........
得到x的位置后,開始想到用二分,没想到超时了,,,,,,看了一下别人的思路,用的是迭代...改成迭代就a了。
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67};
int cnt[100]={19,0,1,1,1,1,2,1,1,1,2,1,2,1,2,2,1,1,2,1,2,2,2,1,2,1,2,1,2,1,3,1,1,2,2,2,2,1,2,2
,2,1,3,1,2,2,2,1,2,1,2,2,2,1,2,2,2,2,2,1,3,1,2,2,1};
long long considrt[6000000],nconsidrt;
void GetConsider(int r)
{
nconsidrt=0;
int i,j,sz;
for(i=0;prime[i]<=r;i++)
{
sz=nconsidrt;
for(j=0;j<sz;j++)
{
if(considrt[j]*prime[i]<=63)
considrt[nconsidrt++]=considrt[j]*prime[i];
}
considrt[nconsidrt++]=prime[i];
}
} long long cal(long long x)
{
long long ret(0);
for(int i=0;i<nconsidrt;i++)
{
if(cnt[considrt[i]]&1)
ret+=(long long)pow(x+0.5,1.0/considrt[i])-1;
else
ret-=(long long)pow(x+0.5,1.0/considrt[i])-1;
}
return x-ret-1;
} long long solve(long long n,int r)
{
GetConsider(r);
long long ans = n;
while(1)
{
long long temp = cal(ans);
if(temp == n)
break;
ans += n - temp;
}
return ans;
}
int main()
{
int ncase,r;
long long n;
scanf("%d",&ncase);
while(ncase--)
{
scanf("%I64d%d",&n,&r);
printf("%I64d\n",solve(n,r));
}
return 0;
}
hdu5297 Y sequence(容斥原理+迭代)的更多相关文章
- HDU - 5297:Y sequence (迭代&容斥)
Yellowstar likes integers so much that he listed all positive integers in ascending order,but he hat ...
- [2015hdu多校联赛补题]hdu5297 Y sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5297 题意:给你一个所有正整数的序列,然后去掉满足x^(2~r)的所有数(x为所有正整数,r>= ...
- HDU 5297 Y sequence 容斥 迭代
Y sequence 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5297 Description Yellowstar likes integer ...
- 2015 Multi-University Training Contest 1 - 10010 Y sequence
Y sequence Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5297 Mean: 有连续数列A={1,2,3,4,5,6, ...
- 2015 Multi-University Training Contest 1 y sequence
Y sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- HDU 4390 Number Sequence 容斥原理
Number Sequence Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU 1560 DNA sequence (迭代加深搜索)
The twenty-first century is a biology-technology developing century. We know that a gene is made of ...
- HDU 5297 Y sequence Y数列
题意:给定正整数n和r.定义Y数列为从正整数序列中删除全部能表示成a^b(2 ≤ b ≤ r)的数后的数列,求Y数列的第n个数是多少. 比如n = 10. r = 3,则Y数列为2 3 5 6 7 1 ...
- HDU 1560 DNA sequence (IDA* 迭代加深 搜索)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1560 BFS题解:http://www.cnblogs.com/crazyapple/p/321810 ...
随机推荐
- 20169211《Linux内核原理与分析》第一周作业
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没 ...
- HDU 6182 A Math Problem
暴力. $k$的$k$次方在$k=15$的时候,达到了最大不爆掉的情况. #include<bits/stdc++.h> using namespace std; long long an ...
- CPPUNIT_TEST
(1) CPPUNIT_ASSERT(condition):判断condition的值是否为真,如果为假则生成错误信息. (2)CPPUNIT_ASSERT_MESSAGE(message, cond ...
- 八皇后--python代码
迭代和递归方法的运用 import random def prettyprint(solution): #图形化处理数据 def line(pos,length=len(solution)): #单行 ...
- 最大流KK算法
最大流KK算法 #include<iostream> #include<stdio.h> #include<string.h> #include<math.h ...
- BZOJ1086 SCOI2005王室联邦
想学树上莫队结果做了个树分块. 看完题后想到了菊花图的形状认为无解,结果仔细一瞧省会可以在外省尴尬 对于每一颗子树进行深搜,一旦遇到加在一起大小达到B则将它们并为一省,因为他子树搜完以后没有分出块的大 ...
- java中的多线程 // 基础
java 中的多线程 简介 进程 : 指正在运行的程序,并具有一定的独立能力,即 当硬盘中的程序进入到内存中运行时,就变成了一个进程 线程 : 是进程中的一个执行单元,负责当前程序的执行.线程就是CP ...
- 没有调用PageHelper.startPage()分页方法,最后还是执行了PageHelper分页方法的原因
SELECT * FROM ( SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( ...
- --whole-archive和--no-whole-archive
--whole-archive选项解决的是编译中常遇到的问题.在代码中定义的符号(如函数名)还未使用到之前,链接器并不会把它加入到连接表中. 如下面这个例子: a.cpp: void func(){p ...
- hust 1385 islands 并查集+搜索
islands Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/problem/show/1385 Descri ...