数论,质因数,gcd——cf1033D 好题!
直接筛质数肯定是不行的
用map<ll,ll>来保存质因子的指数
考虑只有3-5个因子的数的组成情况
必定是a=pq or a=p*p or a=p*p*p or a=p*p*p*p
先用二分判后面三种情况
然后判第一种情况
由于不知道pq,而且无法直接求,我们间接用 d=gcd(a[i],a[j]) 来求
如果1<d<a[i],那么a[i]两个因数就可以确定是d,a[i]/d
反之a[i]两个因数未出现过,pq直接计算到贡献里去
但是可能有和a[i]相等的数,所以我们不先计算这样pq的数量,而是另外开一个map<ll,ll>来计算像a[i]这样的不能直接求出因子的数及其个数
然后求答案时再和另一个map分开统计,相乘
#include<bits/stdc++.h>
#include<map>
using namespace std;
#define ll long long
#define mod 998244353
map<ll,ll>mp;
map<ll,ll>::iterator it;
int n,tot;
ll a[];
ll calc4(ll x){
ll l=,r=,mid;
while(l<=r){
mid=l+r>>;
ll t=mid*mid*mid*mid;
if(t==x)return mid;
else if(t>x)r=mid-;
else l=mid+;
}
return -;
}
ll calc3(ll x){
ll l=,r=,mid;
while(l<=r){
mid=l+r>>;
ll t=mid*mid*mid;
if(t==x)return mid;
else if(t>x)r=mid-;
else l=mid+;
}
return -;
}
ll calc2(ll x){
ll l=,r=,mid;
while(l<=r){
mid=l+r>>;
ll t=mid*mid;
if(t==x)return mid;
else if(t>x)r=mid-;
else l=mid+;
}
return -;
}
map<ll,ll>has;
int main(){
cin>>n;
for(int i=;i<=n;i++)cin>>a[i];
for(int i=;i<=n;i++){
ll p=calc4(a[i]);
if(p!=-){mp[p]+=;continue;}
p=calc3(a[i]);
if(p!=-){mp[p]+=;continue;}
p=calc2(a[i]);
if(p!=-){mp[p]+=;continue;} int flag=;
for(int j=;j<=n;j++){//找p
if(i==j)continue;
ll d=__gcd(a[i],a[j]);
if(d!= && d!=a[j]){
mp[d]++;mp[a[i]/d]++;
flag=;break;
}
}
if(flag==)has[a[i]]++;//找不到p,就把a[i]存下来
}
ll ans=;
for(it=has.begin();it!=has.end();it++){//计算第二个map的贡献
ans=ans*(it->second+)%mod*(it->second+)%mod;
}
for(it=mp.begin();it!=mp.end();it++){//计算第一个map的贡献
ans=ans*(it->second+)%mod;
}
cout<<ans<<endl;
}
数论,质因数,gcd——cf1033D 好题!的更多相关文章
- 数论-质因数(gcd) UVa 10791 - Minimum Sum LCM
https://vjudge.net/problem/UVA-10791/origin 以上为题目来源Google翻译得到的题意: 一组整数的LCM(最小公倍数)定义为最小数,即 该集合的所有整数的倍 ...
- HDU1695:GCD(容斥原理+欧拉函数+质因数分解)好题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目解析: Given 5 integers: a, b, c, d, k, you're to ...
- 【20181027T1】洛阳怀【推结论+线性筛+分解质因数+GCD性质】
原题:CF402D [错解] 唔,先打个表看看 咦,没有坏质数好像就是质因数个数啊 那有坏质数呢? 好像变负数了 推出错误结论:f(x)=x的质因数个数,如果有个坏质数,就乘上-1 然后乱搞,起码花了 ...
- 数论 - 欧拉函数模板题 --- poj 2407 : Relatives
Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11372 Accepted: 5544 Descri ...
- (转载)关于gcd的8题
发现其实有关gcd的题目还是挺多的,这里根据做题顺序写出8题. [bzoj2818: Gcd] gcd(x,y)=质数, 1<=x,y<=n的对数 做这题的时候,懂得了一个非常重要的转化: ...
- 数论3——gcd&&lcm
gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm ( gcd就是gcd(a, b), ( •̀∀•́ ) ...
- 【POJ 1845】Sumdiv——数论 质因数 + 分治 + 快速幂
(题面来自luogu) 题目描述 输入两个正整数a和b,求a^b的所有因子之和.结果太大,只要输出它对9901的余数. 输入格式 仅一行,为两个正整数a和b(0≤a,b≤50000000). 输出格式 ...
- 【poj 2407】Relatives(数论--欧拉函数 模版题)
题意就是求10^9以内的正整数的欧拉函数(Φ(n)表示<=n的与n互质的正整数个数). 解法:用欧拉筛和欧拉函数的一些性质: 1.若p是质数,Φ(p)=p-1: 2.欧拉函数是积性函 ...
- HDU3988-Harry Potter and the Hide Story(数论-质因数分解)
Harry Potter and the Hide Story Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 ...
随机推荐
- PAT_A1094#The Largest Generation
Source: PAT A1094 The Largest Generation (25 分) Description: A family hierarchy is usually presented ...
- Jsoup 学习笔记
这里写自定义目录标题 Jsoup 学习笔记 解析 HTML 的字符串解析 URL 解析 本地文件解析 解析数据 DOM 解析 使用选择器解析 选择器概述 选择器组合用法 过滤用法 修改数据 HTML ...
- Neo4j中實現自定義中文全文索引
資料庫檢索效率時,一般首要優化途徑是從索引入手,然後根據需求再考慮更復雜的負載均衡.讀寫分離和分散式水平/垂直分庫/表等手段:索引通過資訊冗餘來提高檢索效率,其以空間換時間並會降低資料寫入的效率,因此 ...
- git提交流程简述
1.初始化:一个项目只执行一次 只要有.git隐藏文件夹就ok了 git init 或者 git clone url 2.为远程github仓库生成别名(remote-name就是远程仓库的别名)这一 ...
- 《软件调试修炼之道》Part 1(CH1~5)读书笔记 PB16110698 第八周(~4.26)
编程中,调试几乎是必不可少的,一劳永逸.一次完成预想功能而完全不出bug的情况凤毛麟角,出现bug→调试→再出现bug→再调试……基本是软件工程中的常态.可以说,软件调试是每个coder的必修课,而& ...
- JS事件 光标聚焦事件(onfocus)当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行
光标聚焦事件(onfocus) 当网页中的对象获得聚点时,执行onfocus调用的程序就会被执行. 如下代码, 当将光标移到文本框内时,即焦点在文本框内,触发onfocus 事件,并调用函数messa ...
- this 、typeof、false、parseInt()、this、arguments、Array和object判断
typeof typeof (undefined) 不会报错 undefined object Number boolean function String 返回值为字符串类型 false .fals ...
- PL/SQL跨库查询数据
步骤一:找到Database links (新建) 步骤二:正确填写完对应信息 (应用) : 步骤三:执行PL/SQL语句(完成) select * from tablename@MYDATA 注释 ...
- python3 enum模块
枚举是绑定到唯一的常量值的一组符号名称(成员).在枚举中,成员可以通过身份进行比较,枚举本身可以迭代. 1.Enum模块 该模块定义了四个枚举类,可用于定义唯一的名称和值集:Enum,IntEnum, ...
- 网页存储倒计时与解决网页cookie保存多个相同key问题
短信倒计时多用网页临时存储,这可以保证网页在关闭状态也可记时. <p class="test_button" id="getcode">获取验证码& ...