题目传送门(内部题40)


输入格式

第一行:两个正整数$n$、$m$。


输出格式

第一行:一个整数,代表式子的值。


样例

样例输入1:

4 5

样例输出1:

0
样例输入2:

799 8278

样例输出2:

-11


数据范围与提示


题解

对于每个$i$,其对答案的贡献就是它能与$1\sim m$中的几个数相乘得到完全平方数。

显然我们需要枚举$i$,然后$\Theta(1)$算贡献。

所以这时候就存在两种情况:

  $\alpha.i$是完全平方数,这时候我们只需要求出$1\sim m$中有几个完全平方数,而这个数就是$\sqrt m$。

  $\beta.i$不是完全平方数,众所周知,完全平方数$\times$完全平方数$=$完全平方数。那么考虑分解$i$,将其分解成$p_1\times p_2\times ...\times q$,其中$p$为完全平方数,$q$为非完全平方数,我们需要求的是$q\times j$有几个是完全平方数,而这个数即为$\sqrt{\frac{m}{q}}$。

预处理出来每一个$i$的$q$,即可$\Theta(1)$算贡献。

时间复杂度:$\Theta(n)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
long long m;
int cnt[10000001];
bool pfs[10000001];
int ans;
int main()
{
scanf("%d%lld",&n,&m);
for(int i=1;i*i<=n;i++)
{
for(int j=1;i*i*j<=n;j++)
cnt[i*i*j]=j;
pfs[i*i]=1;
}
int sqr=sqrt(m);
for(int i=1;i<=n;i++)
if(pfs[i])
{
if(sqr&1)ans--;
else ans++;
}
else
{
if((int)sqrt(m/cnt[i])&1)ans--;
else ans++;
}
printf("%d",ans);
return 0;
}

rp++

[CSP-S模拟测试]:玄学题/c(数学)的更多相关文章

  1. [CSP-S模拟测试]:工业题/a(数学)

    题目传送门(内部题39) 输入格式 第一行:四个正整数$n$.$m$.$a$.$b$.第二行:$n$个正整数,第$i$个表示$f(i,0)$.第三行:$m$个正整数,第$i$个表示$f(0,i)$. ...

  2. [CSP-S模拟测试]:C(倍增+数学)

    题目传送门(内部题152) 输入格式 第一行两个整数$N,Q$. 接下来一行$N$个整数,第$i$个为$a_i$. 接下来的$N-1$行,每行两个整数$u,v$.表示$u,v$之间有一条边. 接下来的 ...

  3. [CSP-S模拟测试]:B(DP+数学)

    题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...

  4. [CSP-S模拟测试]:物理课(数学)

    题目传送门(内部题144) 输入格式 从$physics.in$读入数据. 第一行一个数$T$,代表有$T$组数据.接下来$T$行每行$4$个浮点数,分别为$\theta,v,d,g$,保留到小数点后 ...

  5. [CSP-S模拟测试]:最大或(数学)

    题目传送门(内部题141) 输入格式 输入文件包含多组测试数据,第一行为一个正整数$T$,表示数据组数. 接下来$T$行,每行两个正整数$l,r$.数据保证$l\leqslant r$成立. 输出格式 ...

  6. [CSP-S模拟测试]:平方数(数学+哈希)

    题目传送门(内部题137) 输入格式 第一行,一个正整数$n$. 第二行$n$个正整数$a_1\sim a_n$. 输出格式 输出一个整数,为满足条件的二元组个数. 样例 样例输入: 51 2 3 4 ...

  7. [CSP-S模拟测试]:简单计算(数学)

    题目传送门(内部题104) 输入格式 第一行一个正整数$T$,表示该测试点内的数据组数,你需要对该测试点内的$T$组数据都分别给出正确的答案才能获得该测试点的分数. 接下来$T$组数据,每组数据一行两 ...

  8. [CSP-S模拟测试]:位运算(数学)

    题目传送门(内部题72) 输入格式 输入文件$bit.in$ 每个输入文件包含$T$组测试数据.输入文件的第一行为一个整数$T$,表示数据组数.接下来$T$行,每行表示一组测试数据每组测试数据包括三个 ...

  9. [CSP-S模拟测试]:导弹袭击(数学+凸包+单调栈)

    题目背景 $Guess$准备向敌军阵地发起进攻了!$Guess$的武器是自动制导导弹.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降维打击,结果... 题目描述 众所周知,环境因素对导 ...

随机推荐

  1. Oracle or Question Solve(一)

    Oracle查看版本命令:select * from v$version; ORACLE_BASE和ORACLE_HOME路径查看su - oracleecho $ORACLE_BASEecho $O ...

  2. element upload上传前对文件专门bs64上传

    <!-- 文件上传 --> <template> <section class="file-upload"> <p class=" ...

  3. 测开之路五十一:代码实现MongoDB增删改查

    初始化时连接.析构时断开连接 from pymongo import MongoClient class Mogo(object): def __init__(self, host='127.0.0. ...

  4. 4.tensorflow——CNN

    1.CNN结构:X-->CONV(relu)-->MAXPOOL-->CONV(relu)-->FC(relu)-->FC(softmax)-->Y 1.1 卷积层 ...

  5. token是什么?和session什么区别,怎么用

    对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西. 一.我们先解释一下他的含义: 1 ...

  6. Infinity、-Infinity和NaN

    首先看看这三个代表什么: Infinity:正无穷大 -Infinity:负无穷大 NaN:Not a Number 当float或double类型的数除零时, 当被除数为非零值时,结果为无穷大 当被 ...

  7. 【python】 字符串转小写(含汉字等时仍work)

    def mylower(str): outstr = ""; strlen = len(str); idx = 0; while idx < strlen: if ord(s ...

  8. Nacos-服务注册地址为内网IP的解决办法

    最近在使用Spring Cloud Alibaba这一套微服务解决方案,但是在服务注册的时候,网关死活找不到微服务地址,自己的微服务通过网关怎么也访问不到. 查找原因 仔细一查才发现,网关去访问了一个 ...

  9. SpringMVC学习(7):格式化显示

    在系列(6)中我们介绍了如何验证提交的数据的正确性,当数据验证通过后就会被我们保存起来.保存的数据会用于以后的展示,这才是保存的价值.那么在展示的时候如何按照要求显示?(比如:小数保留一定的位数,日期 ...

  10. 常用Message Queue对比

    目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量 ...