付公主的矩形

题链

我们注意给定n*m的矩形,直线穿过的点为 n+m-gcd(n,m);

n+m=k+gcd(n,m); 故 gcd(n,m)| k

且 n/gcd(n,m)+m/gcd(n,m)=k/gcd(n,m)+1;

n/gcd(n,m)与 m/gcd(n,m)互质。

故我们枚举 gcd ,那么我们发现对于固定的gcd,(我们记欧拉函数为fi(x))

n,m的对数=fi (k/gcd+1)

不过这是有重复的,最后+1再除2就好了。

#include<bits/stdc++.h>
#define N 3000007
using namespace std;
int u[N],pim[N>>1],tot,n;
void pre() {
    for (int i=2;i<N;i++) {
        if (!u[i]) u[i]=i-1,pim[++tot]=i;
        for (int j=1;j<=tot&&pim[j]*i<N;j++) {
             if (i%pim[j]) u[i*pim[j]]=u[i]*(pim[j]-1);
             else  { u[i*pim[j]]=u[i]*pim[j]; break; }
        }
    }
}
long long ans;
signed main () {
    scanf("%d",&n);
    pre();
    for (int i=1;i*i<=n;i++)
    if (n%i==0)
     if (i*i==n) ans+=u[i+1];
    else ans+=u[i+1]+u[n/i+1];
    printf("%lld",ans+1>>1);
}

原文地址:https://www.cnblogs.com/rrsb/p/8683412.html

时间: 2024-10-09 11:44:46

付公主的矩形的相关文章

LG4389 付公主的背包

付公主的背包 付公主有一个可爱的背包,这个背包最多可以装 \(10^5\) 大小的东西. 付公主有 \(n\) 种商品,每种商品体积为 \(v_i\),都有 \(10^5\) 件. 给定 \(m\),对于 \(s\in [1,m]\),请你回答用这些商品恰好装 \(s\) 体积的方案数.对 \(998244353\) 取模. \(n,m\leq 100000,1\leq V_i\leq m\). 题解 https://2016gdgzoi509.blog.luogu.org/fu-gong-zh

付公主的背包

题链 这是重题啦. 真*题解· 原文地址:https://www.cnblogs.com/rrsb/p/8683421.html

[luogu4389]付公主的背包(FFT)

完全背包方案计数问题的FFT优化.首先写成生成函数的形式:对重量为V的背包,它的生成函数为$\sum\limits_{i=0}^{+\infty}x^{Vi}=\frac{1}{1-x^{V}}$于是答案就是$\prod \frac{1}{1-x^{V_k}}$.直接做显然会超时,考虑使用ln将乘法变为加法.https://www.cnblogs.com/cjyyb/p/10132855.html 1 #include<cmath> 2 #include<cstdio> 3 #in

【LGP4389】付公主的背包

题目 退役前抄一道生成函数快乐一下 就是让我们做一个完全背包,但是朴素的做法显然是\(O(nm)\)的 把每一个物品搞成一个多项式,显然这个多项式所有\(v_i\)的倍数箱为\(1\),剩下的为\(0\) 我们写成生成函数的话就是\(\frac{1}{1-x^{v_i}}\) 也就是我们我们要求的答案就是 \[\prod_{i=1}^n\frac{1}{1-x^{v_i}}\] 直接大力卷积是 \(O(nmlogn)\)的,好像还比暴力慢了一点 发现连乘并不是很好处理,考虑取一个\(\ln\)

luogu4389 付公主的背包

题目描述: luogu 题解: 生成函数+多项式exp板子. 首先商品默认无穷件.所以对于价值为$k$的商品,其生成函数为$\frac{1}{1-x^k}$. 然后集体取ln求和然后再exp就好了. 但是这个算法的瓶颈在集体取ln. 发现一个性质:$$ln(\frac{1}{1-x^k})=-ln(1-x^k)$$ $$=- \int \frac{-kx^{k-1}}{1-x^k}$$ $$=\int kx^{k-1}*\sum_{i=0}^{\infty}x^{ki}$$ $$=\int \s

[复习]多项式和生成函数相关内容

[复习]多项式和生成函数相关内容 多项式 涉及的方面 主要在于多项式的乘法,也就是\(FFT,NTT,MTT\). 但是也多项式的求逆,\(exp\),\(ln\),开根,求导,积分等操作. 多项式乘法 并没有什么好复习的,记好板子就行了.同样也是多项式运算的基础. 泰勒展开&麦克劳林级数 泰勒展开: 如果\(f(x)\)在\(x0\)处存在\(n\)阶导,那么就有: \[\begin{aligned}f(x)&=f(x0)+\frac{f^1(x0)}{1!}(x-x0)+\frac{f

bzoj3007: 拯救小云公主

Description 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等级1的时候,他明白这就是一个不可能完成的任务. 但他不死心,他在想,能不能避开boss去拯救公主呢,嘻嘻. Boss的洞穴可以看成一个矩形,英雄在左下角(1,1),公主在右上角(row,line).英雄为了避开boss,当然是离boss距离越远越好了,所以英雄决定找一条路径使到距离bo

【BZOJ】【3007】拯救小云公主

思路题 我的naive的做法是二分答案+判定是否有路径可走……但是没有正确理解[走的方向任意]这句话…… 其实就是说想咋走咋走= =360°无死角乱走…… 所以其实是个平面上的问题…… 我们可以换个方向来考虑……二分一个答案,判断英雄走到/走不到公主那里,是不是就等价于,boss控制的区域连起来了使得英雄走不到公主那里了?(狼抓兔子的即视感) 所以我们可以转化成从上边&左边,在boss之间走,使得走到下边&右边 路径上最大的一条边(边权代表着如果英雄从这两个boss之间经过,离两个boss

【bzoj3007】拯救小云公主 二分+对偶图+并查集

题目描述 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等级1的时候,他明白这就是一个不可能完成的任务. 但他不死心,他在想,能不能避开boss去拯救公主呢,嘻嘻. Boss的洞穴可以看成一个矩形,英雄在左下角(1,1),公主在右上角(row,line).英雄为了避开boss,当然是离boss距离越远越好了,所以英雄决定找一条路径使到距离boss的最短距离