bzoj 1408 [Noi2002]Robot(欧拉函数)

【题目链接】

  http://www.lydsy.com/JudgeOnline/problem.php?id=1408

【题意】

求m的所有约数中,满足可以分解成(奇数个不同素数/偶数个不同素数/其他)的所有的phi之和。

【思路】

ans1表示目前为止有偶数个奇质因子的欧拉函数的前缀和

ans2表示目前为止有奇数个奇质因子的欧拉函数的前缀和。

注意2不是奇质因子,需要去掉。

第三种可以由m-1减去前两种,减1为去掉1,1不是老师。

【代码】

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4
 5 const int N = 2e3+10;
 6 const int MOD = 10000;
 7
 8 int pow(int a,int p,int mod)
 9 {
10     int ans=1;
11     while(p) {
12         if(p&1) ans=(ans*a)%mod;
13         a=(a*a)%mod; p>>=1;
14     }
15     return ans;
16 }
17
18 int ans1,ans2,ans3,n,m,p,e;
19
20 int main()
21 {
22     scanf("%d",&n);
23     m=1;
24     for(int i=1;i<=n;i++)
25     {
26         scanf("%d%d",&p,&e);
27         m=(m*pow(p,e,MOD))%MOD;
28         if(p==2) continue;
29         int t1=(ans1+ans2*(p-1))%MOD;
30         int t2=(ans2+(ans1+1)*(p-1))%MOD;
31         ans1=t1,ans2=t2;
32     }
33     ans3=((m-1-ans1-ans2)%MOD+MOD)%MOD;
34     printf("%d\n%d\n%d\n",ans1,ans2,ans3);
35     return 0;
36 }
时间: 2024-09-30 16:13:52

bzoj 1408 [Noi2002]Robot(欧拉函数)的相关文章

BZOJ 1408: [Noi2002]Robot

1408: [Noi2002]Robot Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 510  Solved: 344[Submit][Status][Discuss] Description Input Output Sample Input 3 2 1 3 2 5 1 Sample Output 8 6 75 HINT 90号机器人有10个老师,加上它自己共11个.其中政客只有15号:军人有3号和5号:学者有8个,它们的编号分别是:2,6,9,

bzoj 2818 GCD 数论 欧拉函数

bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sample Output 4 HINT hint对于样例(2,2),(2,4),(3,3),(4,2) 1<=N<=10^7 题解一(自己yy) phi[i]表示与x互质的数的个数 即gcd(x,y)=1 1<=y<x ∴对于x,y 若a为素数 则gcd(xa,

bzoj 2818 Gcd 【欧拉函数】

问题:求gcd(x,y)==质数, 1<=x,y<=n的有多少对? 做这题的时候,懂得了一个非常重要的转化:求(x, y) = k, 1 <= x, y <= n的对数等于求(x, y) = 1, 1 <= x, y <= n/k的对数!所以,枚举每个质数p,然后求(x, y) = 1, 1 <= x, y <= n/p的个数. (x, y) = 1 的个数如何求呢?欧拉函数! #include <stdio.h> #include <io

BZOJ 3813 奇数国 欧拉函数+线段树+乘法逆元

题目大意:给出一个序列,支持修改操作,求这个序列连续一段的乘积的欧拉函数.每个数的最大质因子不超过281. 思路:φ(n) = n * (1 - 1 / p1) * (1 - 1 / p2) * (1 - 1 / p3) * (1 - 1 / p4)--*(1 - 1 / pn) = n  / (p1 * p2 * p3 * -- * pn) * ((p1 - 1) * (p2 - 1) * (p3 - 1) * -- * (pn - 1)) 于是这个东西只需要维护一下区间中的指数,用bitse

BZOJ 2190仪仗队【欧拉函数】

问题的唯一难点就是如何表示队长能看到的人数?如果建系,队长所在的点为(0,0)分析几组数据就一目了然了,如果队长能看到的点为(m,n),那么gcd(m,n)=1即m n 互质或者是(0,1),(1,0)两点.证明很简单,如果gcd(m,n)=d 那么(m/d,n/d)必然会挡住点(m,n),所以gcd(m,n)=1是必然的.这样问题就划归到2到n-1有多少数互质.由于欧拉函数的意义是小于n的与n互质的数的个数,所以知道欧拉函数意义的人都能第一时间想到答案就是t=φ(2)+φ(3)+…+φ(n-1

BZOJ 1408 NOI2002 Robot 数论

题目大意:- -我不行了自己看 逗比题- - 用了这么大篇幅来讲述什么是φ和μ- - 不过不是普通的φ和μ,有些变形- - 新定义的φ(1)=0,新定义的μ只计算奇质数,含有2为因子的数都按照μ值为零处理 我们首先求出第一问和第二问,即μ值不等于0的部分 由于μ的定义,μ值不等于0当且仅当每个质因数的次数都是1次 因此我们枚举每个奇质数 计算加上这个奇质数之后φ值之和多出来的部分 由于φ是积性函数 所以前两问可以在O(n)时间内出解 第三问可以用总答案减掉前两问的答案 由于Σ[d|n]φ(d)=

[BZOJ 4173]数学【欧拉函数】

[Description] (1<=n,m<=10^15) Read More >> http://codeplay0314.is-programmer.com/posts/101200.html 版权声明:本文为博主原创文章,未经博主允许不得转载.

BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )

假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 = ∑phi(i) * 2 + 1 ( 1 <= i < n ). +2是因为(1, 0), (0, 1) 两个点, -1是因为(1, 1)重复计算了 -------------------------------------------------------------------------

bzoj 2818 Gcd(欧拉函数)

[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2818 [题意] 问(x,y)为质数的有序点对的数目. [思路] 定义f[i]表示i之前(x,y)=1的有序点对的数目,则有递推式: f[1]=1 f[i]=f[i-1]+phi[i]*2 我们依次枚举小于n的所有素数,对于素数t,(x,y)=t的数目等于(x/t,y/t),即f[n/t]. [代码] 1 #include<cstdio> 2 #include<cstring&