CF576A Vasya and Petya's Game

题目大意:

给定一个数字 n,现在 Vasya 要从 1∼n 中想一个数字 x。

Petya 向 Vasya 询问 “x 是否能整除 y?” ,通过 Vasya 的回答来判断 x 的答案。

Petya 的问题一开始就已经准备好,他必须将所有问题都问一遍,不管他当前需不需要问。

他想知道无论 Vasya 想出任何的 x, 最少要准备多少次询问 y 的问题才能猜中 x,并输出一组具体方案。 n≤1000

题解:

不知道怎么说。。。。就是寻找1~n中的所有质数,然后再把计算所有质数不大于n的所有幂,以上所计算的数就是最终答案

点击查看代码
#include<bits/stdc++.h> using namespace std; const int MAXN = 1000; bool vis[MAXN + 5]; vector<int> prime; int n; int main(){ cin >> n; for(int i = 2; i <= n; i++){//线性筛法求质数 if(!vis[i])prime.push_back(i); for(int j = 0; i * prime[j] <= n; j++){ vis[i * prime[j]] = 1; if(i % prime[j] == 0)break; } } memset(vis,0,sizeof vis); for(int i = 0; i < prime.size(); i++){ int now = prime[i]; while(now * prime[i]<= n){ now *= prime[i];//计算所有幂并加入到答案中 if(!vis[now])prime.push_back(now); vis[now] = 1; } } cout << prime.size() << "\n"; for(int i = 0; i < prime.size(); i++){ cout << prime[i] << " ";; } }

__EOF__

本文作者Never Gonna Give You Up!
本文链接https://www.cnblogs.com/CZ-9/p/16468157.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   腾云今天首飞了吗  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示