spoj PGCD - Primes in GCD Table

2024-03-02 08:48
文章标签 table primes gcd spoj pgcd

本文主要是介绍spoj PGCD - Primes in GCD Table,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 题目链接:

题目链接:

https://www.spoj.com/problems/PGCD/
原来spoj知道题号不行啊。。要知道题的名字才行。。。然后改掉网址后面的题号就阔以了。。。
题意:就是求gcd(x,y)=质数 的个数
做过莫比乌斯的模板的就很清楚,不就是求f(2)+f(3)+f(5)+…+f§么?如果真是这样,那就是一道模板题,就没有什么意思了,果然,暴力这样求T掉了,嗯~不错不错

我们把相同 的F(n)的mu写在一起,就是F(n)*(mu(x1)+mu(x2)+…) 这样,阔以发现,x1,x2…都是n的质因子,然后就用一个Cnt[i]来记录 i 的所以质因子的莫比乌斯函数和,又因为要用到一段一段的,所以就用的是前缀和的那个套路就行了~

打个F的表,前面的系数mu 就不写了

在这里插入图片描述

#include"iostream"
#include"cstring"
#include"vector"
typedef long long LL;
using namespace std;
const int maxn=1e7+5;
char mu[maxn];
int Smu[maxn];
vector<int>prime;
bool vis[maxn];
int Cnt[maxn];//Cnt[i]表示i所有因子的mu的和 
int sum[maxn];
void Init(int n)
{memset(vis,1,sizeof(vis));mu[1]=1;Smu[1]=1;for(int i=2; i<=n; i++){if(vis[i]){prime.push_back(i);mu[i]=-1;}for(int j=0; j<prime.size()&&i*prime[j]<=n; j++){vis[i*prime[j]]=0;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}else mu[i*prime[j]]=-mu[i];}Smu[i]=Smu[i-1]+mu[i];}for(int i=1;i<=n;i++){if(mu[i]==0)continue;for(int j=0;j<prime.size();j++){if((LL)i*prime[j]>n)break;Cnt[i*prime[j]]+=mu[i]; }}for(int i=1;i<=n;i++)sum[i]=sum[i-1]+Cnt[i];
}
long long F(int d,int n,int m)
{return (long long)(n/d)*(m/d);
}
int main()
{Init(maxn-5);int N,M,T;cin>>T;while(T--){cin>>N>>M;LL ans=0;int n=min(N,M);for(int i=1,j;i<=n;i=j+1){j=min(N/(N/i),M/(M/i));ans+=1LL*(sum[j]-sum[i-1])*F(i,N,M);}cout<<ans<<endl;}
}

这篇关于spoj PGCD - Primes in GCD Table的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/765558

相关文章

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

通过Ajax请求后台数据,返回JSONArray(JsonObject),页面(Jquery)以table的形式展示

点击“会商人员情况表”,弹出层,显示一个表格,如下图: 利用Ajax和Jquery和JSONArray和JsonObject来实现: 代码如下: 在hspersons.html中: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>会商人员情况表</title><script type="text/javasc

UVa 10820 Send a Table (Farey数列欧拉函数求和)

这里先说一下欧拉函数的求法 先说一下筛选素数的方法 void Get_Prime(){ /*筛选素数法*/for(int i = 0; i < N; i++) vis[i] = 1;vis[0] = vis[1] = 0;for(int i = 2; i * i < N; i++)if(vis[i]){for(int j = i * i; j < N; j += i)vis[j] =

css-table

设置table的文字不换行:给th,td添加white-space: nowrap; 设置单元格内容及其边框的距离:使用html的cellpadding属性,还有一种方式设置padding。在CSS中,table, th, td{padding:0;}效果等同于cellpadding="0″。 设置table的单元格边距:border-spacing如果定义一个 length 参数,那么定义的是水

react antd table expandable defaultExpandAllRows 不生效问题

原因:defaultExpandAllRows只会在第一次渲染时触发 解决方案:渲染前判断table 的datasource 数据是否已准备好 {pageList.length > 0 ? (<TablerowSelection={rowSelection}columns={columns}dataSource={pageList}style={{ marginTop: 24 }}pagina

el-table 封装表格(完整代码-实时更新)

最新更新时间: 2024年9月6号 1. 添加行内编辑、表头搜索 <template><!-- 简单表格、多层表头、页码、没有合并列行 --><div class="maintenPublictable"element-loading-background="rgba(255,255,255,0.5)"><!--cell-style 改变某一列行的背景色 --><!-- tree-props

@vueup/vue-quill使用quill-better-table报moduleClass is not a constructor

quill官方中文文档:https://www.kancloud.cn/liuwave/quill/1434144 扩展表格的使用 注意:想要使用表格 quill的版本要是2.0以后 升级到这个版本后 其他一些插件就注册不了了。 安装: npm install quill@latest   版本需要大于2.0版本 npm install quill-better-table 引入&

每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd )

A 题意: 有 a 个1 ,b 个2.问是否能将这些数划分为两个数值相等的集合。 输出 YES 或者 NO —————— 问题等价于 将数组 分成两个数值相同的数组。所以sum 应该是偶数。也就是说 1 的个数是偶数。在i1的个数是偶数的情况下,将 2 分成两份,如果2 的个数是偶数,OK。如果是奇数那么需要1来补齐,如果1 的个数大于等于2那么可以补齐。(1 的个数是偶数,需要2个1来补齐,剩下

【0323】Postgres内核之 hash table sequentially search(seq_scan_tables、num_seq_scans)

0. seq scan tracking 我们在这里跟踪活跃的 hash_seq_search() 扫描。 需要这种机制是因为如果扫描正在进行时发生桶分裂(bucket split),它可能会访问两次相同的条目,甚至完全错过某些条目(如果它正在访问同一个分裂的桶中的条目)。因此,如果正在向表中插入数据,我们希望抑制桶分裂。 在当前的使用中,这种情况非常罕见,因此只需将分裂推迟到下一次插入即可。

table跨行跨列,字体大小

table跨行跨列,字体大小 <table width="100%"> <tr>         <td style="vertical-align:top"><font size="7">某某</font></td>         <td style="vertical-align:top" colspan="2" align="right"><font size="5">求职意向:W