【BZOJ4173】数学 欧拉函数神题

【BZOJ4173】数学

Description

Input

输入文件的第一行输入两个正整数 。

Output

如题

Sample Input

5 6

Sample Output

240

HINT

N,M<=10^15

题解:STEP 1:

这步还是很容易的吧~毕竟原来的式子不太舒服。但是注意,最后一个式子的取值只能为0或1,所以就变成了。

STEP 2:

这步倒是难理解一些,但是考虑:我们将这三个等式都算出来,如果满足了左边那个条件,那么这三个等式加起来为1,对答案的贡献正好为$\varphi(k)$。否则,因为左边的式子不是0就是1,那么只能是0,这三个等式加起来对答案的贡献也就是0。

STEP 3:这三个式子长得差不多,我们只考虑一个

这步就显得比较套路了。我们强行给那个底式赋予实际意义,然后就转化成了简单的欧拉函数性质应用。三个式子都算完后,你发现结果正好是nm。那么最终的答案就是$\varphi(n)\varphi(m)nm$

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod=998244353;
typedef long long ll;
ll n,m;
ll phi(ll x)
{
	ll ret=x,i;
	for(i=2;i*i<=x;i++)
	{
		if(x%i==0)
		{
			ret=ret/i*(i-1);
			while(x%i==0)	x/=i;
		}
	}
	if(x!=1)	ret=ret/x*(x-1);
	return ret%mod;
}
int main()
{
	scanf("%lld%lld",&n,&m);
	printf("%lld",phi(n)*phi(m)%mod*(n%mod)%mod*(m%mod)%mod);
	return 0;
}
时间: 2024-12-29 09:05:56

【BZOJ4173】数学 欧拉函数神题的相关文章

poj2478 欧拉函数水题

poj2478 欧拉函数水题 Y - Farey Sequence Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2478 Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational number

hdu2824 The Euler function 筛选法求欧拉函数模板题

//求a , b范围内的所有的欧拉函数 //筛选法求欧拉函数模板题 #include<cstdio> #include<cstring> #include<iostream> using namespace std ; const int maxn = 3000010 ; typedef __int64 ll ; int e[maxn] ; int a ,  b ; void Euler() { int i,j; for (i=1;i<maxn;i++) e[i]

【学习总结】数学-欧拉函数

定义 欧拉函数f(n)表示小于n并且与n互质的数的个数 f(n)=n(1?1p1)(1?1p2)-(1?1pk)(pi为n的质因子) 代码 C++ 单个处理 int eulerPhi(int n) { int m = (int)sqrt(n+0.5); in ans = n; for (int i = 2; i <= m; i++) { if (n % i == 0) { ans = ans / i * (i-1); while (n%i==0) n /= i; } } if (n > 1)

(hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 166 Accepted Submission(s): 96   Problem Description The Euler function phi is an important kind of function in number theory

POJ 2407 Relatives(欧拉函数入门题)

Relatives Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if there are no integers x > 1, y > 0, z > 0 such that a = xy and b = xz. Input There are several t

poj2407(欧拉函数模板题)

题目链接:https://vjudge.net/problem/POJ-2407 题意:给出n,求0..n-1中与n互质的数的个数. 思路:欧拉函数板子题,先根据唯一分解定理求出n的所有质因数p1,p2,...,pn,然后根据Φ(m)=m*∏(1-1/pi)计算即可. AC代码: #include<cstdio> using namespace std; int n,ans; int main(){ while(scanf("%d",&n),n){ ans=n; f

hdu 1787(欧拉函数+水题)

题意:给出一个n,求小于n大于0的所有与n不互质的数的个数 是一道欧拉函数的模板题 1 #include<iostream> 2 #include<string.h> 3 #include<string> 4 #include<sstream> 5 #include<vector> 6 #include<deque> 7 #include<map> 8 #include<algorithm> 9 #includ

NOIP模拟:切蛋糕(数学欧拉函数)

题目描述  BG 有一块细长的蛋糕,长度为 n. 有一些人要来 BG 家里吃蛋糕, BG 把蛋糕切成了若干块(整数长度),然后分给这些人. 为了公平,每个人得到的蛋糕长度和必须相等,且必须是连续的一段. 但是, BG 并不知道要有多少人来. 他只知道, 来的人数为n的约数,且小于n. 显然把蛋糕平均分成 n 块一定能满足要求.但是, BG 想要分出的块数尽量少.现在 BG 想知道,他要把蛋糕分成至少多少块,才能使得不管多少人来都能满足要求. 输入格式 输入文件名为 cake.in. 输入共一个整

数论 - 欧拉函数模板题 --- poj 2407 : Relatives

Relatives Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11372   Accepted: 5544 Description Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if ther