牛客OI赛制测试赛2 A 无序组数
链接:https://www.nowcoder.com/acm/contest/185/A
来源:牛客网
题目描述
求出无序二元组(a,b) 使得(a|A,b|B)的组数
无序意思就是(a,b)和(b,a) 算一组.
输入描述:
第一行数据组数 T(1≤T≤10000)
接下来T行,每行两个正整数 A,B(1≤A,B≤10000)
输出描述:
共T行,每行一个结果
输入例子:
1
4 6
输出例子:
11
-->
$n^2$的暴力应该无脑写吧,就不在此多说了,直接讲正解。
a和b$\le$10000,我不知道在一个循环里,for(i=1 ->max(a,b)),然后判断i与a,b的大小这样来枚举a,b的因数可不可以过,$1000 \times 10000$说不定可以试试。
我们来说我比较安全的解法。
我们需要先找出A,B每个数的因子个数,当然我们需要枚举,假设我们在枚举找出A的一个a,那么A/a又何尝不是另一个因子,这样的话我们找到一个因子,因子数加2,当然这个数最大为
为$\sqrt A \times \sqrt A$,所以我们对于每个T最多枚举$ \sqrt A + \sqrt B$次,当然对于$\sqrt A$是A 的因子这种$i = A/ i $的情况需要特殊判断一下,只能因字数加1.
对于A的每个因子,用一个数组标记一下,为了方便判断B的因子中有多少个与之相同的数的个数。
同样的方法,我们求出B的同时记录有多少个相同的因子。
下面来说找出相同的因子数的个数怎么用。
设A的因字数为:1 3 4 5
设B的因子数为:1 4 5 7
我们用A的因子来配B的因子:1(4种),3(4种),4(3种),5(2种)
我们发现若这个数不是公共因子,那么对于每个数情况个数都为B的因子数量,若为公共因子,第一次出现情况数为B的因字数,第二次出现为B的因字数-1,第三次-2...。
那么答案就可以计算为:A的因子的个数$\times$B的因子的个数-1-2-...-(公共因子数-1)。
对于-1-2..这部分可以稍微优化一下,作用不是很大啦。
if(sumv%==)sumv=(sumv+)*(sumv/);
else sumv=(sumv+)*(sumv/)+; //sumv表示公共因子个数。
代码:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int T,a,b,suma,sumb,sumv;
bool vis[];
int main()
{
scanf("%d",&T);
while(T--)
{
memset(vis,,sizeof(vis));
suma=sumb=sumv=;
scanf("%d%d",&a,&b);
int p=sqrt(a);
int q=sqrt(b);
for(int i=; i<=p; i++)
{
if(a%i==)
{
if(a/i==i)suma+=,vis[i]=;
else suma+=,vis[i]=vis[a/i]=;
}
} for(int i=; i<=q; i++)
{
if(b%i==)
{
if(b/i==i)sumb+=,sumv+=vis[i];
else sumb+=,sumv+=vis[i],sumv+=vis[b/i];
}
}
sumv--;
if(sumv%==)sumv=(sumv+)*(sumv/);
else sumv=(sumv+)*(sumv/)+;
printf("%d\n",suma*sumb-sumv);
}
}
牛客OI赛制测试赛2 A 无序组数的更多相关文章
- 【牛客OI赛制测试赛3】 毒瘤xor
牛客OI赛制测试赛3 毒瘤xor 传送门 题面,水表者自重 Solution 前缀和简单题(挖坑待补) 代码实现 #include<stdio.h> #define int long lo ...
- 牛客OI赛制测试赛2(0906)
牛客OI赛制测试赛2(0906) A :无序组数 题目描述 给出一个二元组(A,B) 求出无序二元组(a,b) 使得(a|A,b|B)的组数 无序意思就是(a,b)和(b,a) 算一组. 输入描述: ...
- 牛客OI赛制测试赛2
A题: https://www.nowcoder.com/acm/contest/185/A 链接:https://www.nowcoder.com/acm/contest/185/A来源:牛客网 题 ...
- 8.30 牛客OI赛制测试赛1 F题 子序列
题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘积相乘的结果 输入描述: 第一行一个整数T,表示数据组数.对于每组数据,第一行两个整数N,k,含义如题所 ...
- C数列下标 牛客OI赛制测试赛2
链接:https://www.nowcoder.com/acm/contest/185/C来源:牛客网 给出一个数列 A,求出一个数列B. 其中Bi 表示 数列A中 Ai 右边第一个比 Ai 大的 ...
- 牛客OI赛制测试赛2 D 星光晚餐
链接:https://www.nowcoder.com/acm/contest/185/D来源:牛客网 题目描述 Johnson和Nancy要在星光下吃晚餐.这是一件很浪漫的事情. 为了增加星光晚餐那 ...
- 牛客OI赛制测试赛2 C 数组下标
链接:https://www.nowcoder.com/acm/contest/185/C来源:牛客网 题目描述 给出一个数列 A,求出一个数列B. 其中Bi 表示 数列A中 Ai 右边第一个比 ...
- Nowcoder | [题解-N189]牛客OI赛制测试赛3
这场说实话确实水(逃*1),表示差一点就AK了(逃*2),然而被卡两个特判的我\(ssfd\)...\(qwq\) 表示这是第一次发整场比赛的题解...还请各位大佬原谅我太蒻写的垃圾啊\(qwq\). ...
- 牛客OI赛制测试赛-序列-模拟
哇这道题好坑啊,可能是我太菜了 题意就是叫把一个连续序列分成K组,使得每个组的和都相等 我最开始的想法是由于要分成K组,那我们知道,每组一定有sum(a[i])/k这样我们只需要每次当num==sum ...
随机推荐
- js、匿名函数、闭包、回调函数
234567891011121314151617181920212223242526272829303132333435 闭包 闭包:闭包是指有权访问另一个函数作用域中的变量的函数 函数嵌套一个函数, ...
- [Vue 牛刀小试]:第十二章 - 使用 Vue Router 实现 Vue 中的前端路由控制
一.前言 前端路由是什么?如果你之前从事的是后端的工作,或者虽然有接触前端,但是并没有使用到单页面应用的话,这个概念对你来说还是会很陌生的.那么,为什么会在单页面应用中存在这么一个概念,以及,前端路由 ...
- HDU5145:5145 ( NPY and girls ) (莫队算法+排列组合+逆元)
传送门 题意 给出n个数,m次访问,每次询问[L,R]的数有多少种排列 分析 \(n,m<=30000\),我们采用莫队算法,关键在于区间如何\(O(1)\)转移,由排列组合知识得到,如果加入一 ...
- android内存溢出 java.lang.OutOfMemoryError
今天在做ListView 的时候.想做一个音乐列表模块,前面是图片,后面是分类名称,如下图: 结果运行时候,LogCat是总是报 java.lang.OutOfMemoryError的错误,顾名思义, ...
- hdu6201 transaction transaction transaction(from 2017 ACM/ICPC Asia Regional Shenyang Online)
最开始一直想着最短路,不过看完题解后,才知道可以做成最长路.唉,还是太菜了. 先上图: 只要自己添加两个点,然后如此图般求最长路即可,emmm,用SPFA可以,迪杰斯特拉也可以,或者别的都ok,只要通 ...
- Jmeter之一个请求获取上一个请求的参数
刚开始有这个需求,网上都是一些使用正则表达式的例子,苦于自己看不好正式的表达式,且响应结果稍微变一下,自己就不会写了,于是谷歌上各种搜,也阅读官网上文档,后来发现一个好的插件 Json path Ex ...
- angular 2 angular quick start Could not find HammerJS
Angular2 的material中 引用了 hammerjs,遇到Could not find HammerJS错误,正确的步骤如下: 需要在如下位置增加 对material 和 hammerjs ...
- (025)[系统故障]XP下禁止将串口设备识别成鼠标(转)
很多人都遇到过这种问题:Windows XP启动时将一台连续发送数据的串口设备识别成串口鼠标,自动安装了串口鼠标驱动,而设备因此无法正常工作,而光标则无规律地到处跑.对此问题,Internet上的方法 ...
- RHEL6.5---LVS(IP-TUN)
实验环境: 主机名 IP 所需软件 master eth0==>192.168.30.160(RIP) eth0:1==>192.168.30.130(VIP) ipvsadm node ...
- asp.net 线程批量导入数据,ajax获取执行状态
最近做了一个批量导入功能,长时间运行,没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过a ...