CF576A Vasya and Petya's Game

数论思维题。

根据唯一分解定理,可以知道,如果一个数的各个质因数数量确定了,这个数也就确定了。

每次询问的中,如果 \(x\) 是 \(y\) 的倍数,证明 \(x\) 中含 \(y\) 的所有质因数。我们可以枚举质数,判定 \(x\) 能否整除这个质数,就可以判断 \(x\) 是否含有这个质因数。

但是这还不能完全确定 \(x\),因为这样只能确定是否有某个质因数,而不能确定质因数的数量。为了确定质因数的数量,我们可以把这个质数(设 \(a\) 为这个质数)的 \(b\) 次方都枚举一遍,同时保证 \(a^b\le n\)。因为由乘方的定义,得 \(a^b\) 中含有 \(b\) 个 \(a\),如果 \(x\) 是 \(a^b\) 的倍数,证明 \(x\) 中至少含有 \(b\) 个质因数 \(a\)。把 \(\le n\) 的这类数字都枚举一遍,就可以确定 \(x\) 各个质因子的个数了。

所以,我们先用线性筛筛出 \(\le n\) 的质数,然后根据上文所述计算输出即可。

完整代码

#include <bits/stdc++.h>
using namespace std;
int n,pri[70000],ansd[10000];
bool a[700000];
int linear(bool a[],int pri[],int n)
{
int cnt=0;
a[1]=1;
for(int i=2;i<=n;i++)
{
if(!a[i])pri[cnt++]=i;
for(int j=0;j<cnt&&i*pri[j]<=n;j++)
{
if(!a[i*pri[j]])a[i*pri[j]]=1;
if(i%pri[j]==0)break;
}
}
return cnt;
} int main()
{
int ans=0;
scanf("%d",&n);
int cnt=linear(a,pri,n);
for(int i=0;i<cnt;i++)
{
int now=1;
while(now*pri[i]<=n)now*=pri[i],ansd[ans++]=now;
}
printf("%d\n",ans);
for(int i=0;i<ans;i++)
printf("%d ",ansd[i]);
return 0;
}

AC记录

CF576A Vasya and Petyas Game 题解的更多相关文章

  1. CF576A Vasya and Petya's Game

    题目大意: 给定一个数字 n,现在 Vasya 要从 1∼n 中想一个数字 x. Petya 向 Vasya 询问 "x 是否能整除 y?" ,通过 Vasya 的回答来判断 x ...

  2. CF355B Vasya and Public Transport 题解

    Content 小 \(A\) 要乘坐交通工具,其中公交车的辆数是 \(n\),第 \(i\) 辆公交车的编号为 \(i\),乘坐次数为 \(a_i\):手推车的辆数是 \(m\),每辆手推车的编号为 ...

  3. CF1042E Vasya and Magic Matrix 题解

    题目链接 思路分析 看到题目中 \(n,m \leq 1000\) ,故直接考虑 \(O(n^2)\) 级别做法. 我们先把所有的点按照 \(val\) 值从小到大排序,这样的话二维问题变成序列问题. ...

  4. CF493A Vasya and Football 题解

    Content 有两个球队在踢足球,现在给出一些足球运动员被黄牌或红牌警告的时间,求每个队员第一次被红牌警告的时间. 注意:根据足球比赛规则,两张黄牌自动换成一张红牌. 数据范围:比赛时间 \(90\ ...

  5. CF1082A Vasya and Book 题解

    Content 给定 \(T\) 组数据,每组数据给出四个整数 \(n,x,y,d\).小 V 有一本 \(n\) 页的书,每次可以恰好翻 \(d\) 页,求从第 \(x\) 页恰好翻到第 \(y\) ...

  6. CF1036D Vasya and Arrays 题解

    Content 给定两个长度分别为 \(n\) 和 \(m\) 的数列 \(A,B\).你需要将两个数列都恰好分成 \(k\) 份,使得两个数列中第 \(i(i\in[1,k])\) 份的元素和对应相 ...

  7. CF1065A Vasya and Chocolate 题解

    Content 小 V 有 \(s\) 块钱,商店里有巧克力卖,每块巧克力 \(c\) 块钱,现在商店给出优惠:购买 \(a\) 块巧克力可以免费获得 \(b\) 块巧克力,求小 V 最多能够买到的巧 ...

  8. Codeforces Round #324 (Div. 2) C. Marina and Vasya 贪心

    C. Marina and Vasya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pr ...

  9. Codeforces Round #322 (Div. 2) A. Vasya the Hipster 水题

    A. Vasya the Hipster Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/581/p ...

  10. Codeforces Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学

    C. Vasya and Petya's Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/ ...

随机推荐

  1. STM32真的是很落后吗?

    STM32真的是很落后吗? 作为一名嵌入式开发老兵,我不止一次听到有人说"STM32已经过时了",尤其是那些刚入门或者看了几篇文章的新手.每当听到这样的言论,我都忍不住想笑,但又有 ...

  2. 🔥吐血整理 Bolt.diy 部署与应用攻略

    1.前言 以前总是有很多人无代码基础的人总是在幻想,如何不要自己写代码就可以建立一个自己的创意网站呢?之前总觉得异想天开不可能,屏幕前的你是不是也是这么想的呢,没有想到,Bolt.diy帮你实现了,快 ...

  3. 题解:UVA12517 Digit Sum

    数位 dp 模板题-- 题目大意 给你两个数 l,rl,rl,r,求出 l,rl,rl,r 之间所有数的数位和. 什么是数位和? 举个栗子,有一个数 123123123,那么他的数位和,即各个数位的和 ...

  4. Web前端入门第 42 问:聊聊 CSS 元素上下左右(水平+垂直)同时居中有几种方法

    影响元素位置的 CSS 属性基本介绍完毕(参考前几篇文章),现思考一个最常见的需求: 一个子元素,要摆放在盒子的正中央,使用 CSS 布局手段,究竟有多少种实现方式? 上下左右(水平方向.垂直方向)要 ...

  5. JWT Token解析

    参照:c#中token的使用方法实例_C#教程_脚本之家 (jb51.net) (7条消息) JWT 算法_み旋律的博客-CSDN博客_jwt算法

  6. 如何构造一款类似One API的大模型集成平台

    作为AI领域的开发者,我们经常需要调用多个不同的大语言模型,但面对各家不同的API规范和接入方式,集成工作变得繁琐.构建一个统一的大模型集成平台,能够极大地简化这一过程. 本文将探讨如何实现一个兼容O ...

  7. windows查看连接过wifi的密码

    如何使用批处理脚本获取已保存的WiFi密码 在日常使用电脑时,我们经常会连接多个WiFi网络.随着时间的推移,可能会忘记某些WiFi的密码.幸运的是,Windows系统提供了命令行工具netsh,可以 ...

  8. 遇到的问题之“Parameter 'item' not found. ”

    一.问题 Parameter 'item' not found. 参数item找不到 二.原因 这里的值没有写对,#{item}的item应是改为productSku,改后就不会报错了 三.解决方案 ...

  9. 网络编程:C10K问题

    C10K问题 C10K问题就是如何一台物理机上同时服务10000个用户?C代表并发,10K就是10000 C10K 问题是由一个叫 Dan Kegel 的工程师提出并总结归纳的,你可以通过访问http ...

  10. 第9.3讲、Tiny Transformer: 极简版Transformer

    简介 极简版的 Transformer 编码器-解码器(Seq2Seq)结构,适合用于学习.实验和小型序列到序列(如翻译.摘要)任务. 该实现包含了位置编码.多层编码器.多层解码器.训练与推理流程,代 ...