博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学 - Codeforces Round #319 (Div. 1)A. Vasya and Petya's Game
阅读量:6158 次
发布时间:2019-06-21

本文共 1376 字,大约阅读时间需要 4 分钟。

Vasya and Petya's Game 


 

Mean: 

给定一个n,系统随机选定了一个数x,(1<=x<=n)。

你可以询问系统x是否能被y整除,系统会回答"Yes"or“No"。

问:至少询问多少次可以唯一确定x,并输出询问序列。(special judge).

analyse:

做法:求质数的整数次幂(不大于n)。

思路:首先我们肯定是用质数来判断,因为质数排除的是最多的。

如果质数p[i]能够整除,那么x有可能是p[i]^2,p[i]^3....。

Time complexity: O(N)

 

Source code: 

/*
* this code is made by crazyacking
* Verdict: Accepted
* Submission Date: 2015-09-11-16.33
* Time: 0MS
* Memory: 137KB
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#define max(a,b) (a>b?a:b)
using
namespace
std;
typedef
long
long(
LL);
typedef
unsigned
long
long(
ULL);
const
double
eps(
1e-8);
const
int NN
=
100100;
int p
[NN
];
bool
v
[NN
];
int
num
=-
1;
void
makePrime()
{
     
int
i
,
j;
     
for(
i
=
2;
i
<NN;
++
i)
     
{
           
if(
!
v
[
i
])
{
p
[
++
num
]
=
i;
}
           
for(
j
=
0;
j
<=
num
&&
i
*p
[
j
]
<NN;
++
j)
           
{
                 
v
[
i
*p
[
j
]]
=
true;
                 
if(
i
%p
[
j
]
==
0)
{
break;
}
           
}
     
}
}
vector
<
int
>
ve;
int n;
int
main()
{
     
makePrime();
     
scanf(
"%d"
,
&n);
     
for(
int
i
=
0;
i
<
num;
++
i)
     
{
           
if(p
[
i
]
<=n)
           
{
                 
int
t
=p
[
i
];
                 
while(
t
<=n)
                 
{
                       
ve
.
push_back(
t);
                       
t
=
t
*p
[
i
];
                 
}
           
}
           
else
break;
     
}
     
int
si
=
ve
.
size();
     
printf(
"%d
\n
"
,
si);
     
for(
int
i
=
0;
i
<
si;
++
i)
           
printf(
i
==
si
-
1
?
"%d
\n
"
:
"%d "
,
ve
[
i
]);
     
return
0;
}
/*
*/

 

转载地址:http://dpifa.baihongyu.com/

你可能感兴趣的文章
android 定时打电话教程
查看>>
Dll 导出类 [示例代码]
查看>>
在ListCtrl控件中设置自定义光标
查看>>
如何使java中double类型不以科学计数法表示
查看>>
session的使用
查看>>
shell for循环
查看>>
整型进制转换程序
查看>>
[Silverlight入门系列]使用MVVM模式(6):使用Behavior
查看>>
单例模式(Singleton)
查看>>
firefox插件 Tab Utilities 个性化设置备份
查看>>
iptables--静态防火墙实例教程
查看>>
推荐一款生成SQL插入语句的软件
查看>>
算法系列15天速成——第十三天 树操作【下】
查看>>
SQL语句 怎么把从一个表中查出来数据插入到另一个表中
查看>>
打油诗 游颐和园
查看>>
ASP.NET温故而知新学习系列之ASP.NET多线程编程—异步编程(九)
查看>>
【转】C#解析HTML
查看>>
使用Vitamio打造自己的Android万能播放器(1)——准备
查看>>
cmd 命令
查看>>
C# 获取调用方信息
查看>>