诸如求三个数满足倍数关系,值域分治
Problem - G2 - Codeforces
//小范围数
#include<bits/stdc++.h>
using namespace std;
char a[200010];
typedef pair<int,int> P;
vector<P> q;
int vis[30];
int main()
{ios::sync_with_stdio(false);int t;cin>>t;map<long long,int> mp;while(t--){int n;cin>>n;mp.clear();for(int i=1;i<=n;i++){int x;cin>>x;mp[x]++;}map<long long,int> :: iterator it,it1;it = mp.begin();long long cut=0;for(it;it!=mp.end();it++){int temp = it->first;if(it->second>=3) cut+=1ll*(it->second)*(it->second-1)*(it->second-2);for(int j=2;j*j<=temp;j++){if(temp%(j*j)==0) cut+=1ll*mp[temp]*mp[temp/j]*mp[temp/(j*j)];}cout<<temp<<" "<<cut<<endl;}cout<<cut<<endl;}return 0;
}
//大范围数 值域分治#include <bits/stdc++.h>
using namespace std;long long ans;
map<int,int> freq;void fac(int a){for (int i=2; i*i*i<=a; i++){if(a%(i*i)) continue;ans += 1ll*freq[a]*freq[a/i]*freq[a/(i*i)];}if(a>=1e6) return;for (int i=1; i*i<a; i++){if(a%i) continue;if(a/i > 1e9/a) continue;ans += 1ll*freq[a]*freq[i]*freq[a/i*a];}
}int main() {int t; cin >> t;while(t--){ans = 0;freq.clear();set<int> arr;int n; cin >> n;for (int i=0; i<n; i++){int a; cin >> a; freq[a]++; arr.insert(a);}set<int> ::iterator it;for (it=arr.begin();it!=arr.end();it++){int x = *it;fac(x);ans += 1ll*freq[x]*(freq[x]-1)*(freq[x]-2);cout<<x<<" "<<ans<<endl;}cout << ans << endl;}
}
诸如求三个数满足倍数关系,值域分治相关推荐
- python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数
题目 求三个数的最小公倍数 思路 首先求两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数就是最终结果 有两种方案求两个数的最小公倍数 1. 分解质因数,也是短除法(在程序上差别不大) 循环 ...
- 计算机语言平均数怎么算,使用python怎么求三个数的平均值
使用python怎么求三个数的平均值 发布时间:2021-04-27 17:31:39 来源:亿速云 阅读:64 作者:Leah 本篇文章给大家分享的是有关使用python怎么求三个数的平均值,小编觉 ...
- c语言学习-自定义并调用函数求三个数的最小公倍数
c语言自定义并调用函数求三个数的最小公倍数 程序流程图: 代码: #include<stdio.h> int la1(int m ,int n,int p); int la2(int m ...
- c语言学习-输入三个数求三个数中的最大数
自定义函数,通过函数调用直接找最大数,输入三个数求三个数中的最大数 程序流程图: 代码: #include<stdio.h> double ma(double l,double m,dou ...
- C语言中,求三个数中最大数
C语言中,求三个数中最大数 #include<stdio.h>//以下是进行正整数的最大之间的比较,其他类型只需进行相应的格式修改 int main(){int a,b,c,max;//定 ...
- (C语言)用函数实现求三个数最大值
题目描述:从键盘输入三个数,之后调用函数实现求三个数的最大值 代码实现: #include<stdio.h> int main() {int qmax(int a,int b,int c) ...
- 使用匿名函数求三个数的最大值
使用匿名函数求三个数的最大值: x=input("第一个数:") y=input("第二个数:") z=input("第三个数:") a=( ...
- 求三个数的最小公倍数的解法之美
从键盘上输入三个数,求其最小公倍数. 分析:最小公倍数是指能整除这三个数的公倍数中的最小者,可以利用循环穷举的方法,看是否能整除这三个数.若能整除这三个数,则输出其中的最小的数即为最小公倍数. 第一种 ...
- 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数
第二次作业 题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整 ...
最新文章
- 数据结构(07)— 线性顺序表基本操作
- 5大洲,32个国家:剑桥分析公司的触角到底有多远?
- (原)vs2013编译boost1.60库
- 不从事编程、学python有用吗-没想到,学会Python即使不做程序员都能月入过万!...
- python turtle循环图案-Python内置模块turtle绘图详解
- android 模仿大众点评团购卷列表多余3条时折叠,点击时显示剩余全部的功能
- tomcat设置https访问
- SpringBoot异常处理-自定义HandlerExceptionResolver
- 带有GSON和抽象类的JSON
- 非名校毕业,如何在六天面试六家顶尖科技公司,并拿到全部Offer?
- vs2010下libevent的使用
- Weka中数据挖掘与机器学习系列之Weka系统安装(四)
- Linux 之 NTP 服务 服务器
- 力软敏捷开发框架源码7.0.6旗舰版 JNPF开发平台3.3.3 3.4.1企业版/旗舰版框架
- 【IT项目管理】第8章 习题
- 基于分段解析法的单自由度反应谱程序
- 小程序更新后,wx.getUserInfo 接口不再出现授权弹窗,新方法获取用户信息
- 计算机房七氟丙烷气体灭火系统设计 施工安,计算机房七氟丙烷气体灭火系统的设计方案.doc...
- 计算机休眠风扇不停,Windows7系统睡眠风扇还在转怎么解决【图文教程】
- 暑期实训二20220621