这题只要知道质因数的性质就很容易做了。任意一个正整数(除了1)都可以分解成有限个质数因子的乘积。
那么假如两个数互质,那么这两个数肯定至少各有一个对方没有的质因子。所以若一个数跟n不互质,那么这个的数的质因子肯定也都属于n的质因子,那么就用容斥原理求出所有跟n不互质的所有数的个数。然后再用总的减去即可。
代码如下:
#include
#include
#include
#include...
分类:
其他好文 时间:
2015-01-08 18:11:23
阅读次数:
234
这个题的m的数中居然有0啊,RE了好几次。。。。
初学容斥原理,这才知道还有奇加偶减这个东西,以前一直以为容斥原理不过是把重复的删掉就好了,。。
然后知道奇加偶减这个东西后,就可以深搜了,将所有组合情况全列出来,然后求lcm就好了。数的个数就是(n-1)/lcm,虽然我代码里写的是gcd。。不要在意这些细节。。。#include
#include
#include
#include
#...
分类:
其他好文 时间:
2015-01-08 11:18:55
阅读次数:
156
Problem Description
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.
Two integers are said to be co-prime or relatively pr...
分类:
其他好文 时间:
2015-01-06 23:11:11
阅读次数:
171
Problem Description
One day, Harry got a magical box. The box is made of n*m grids. There are sparking jewel in some grids. But the top and bottom of the box is locked by amazing magic, so Harry ca...
分类:
其他好文 时间:
2015-01-04 23:04:13
阅读次数:
315
1914: [Usaco2010 OPen]Triangle Counting 数三角形Time Limit: 10 SecMemory Limit: 64 MBSubmit: 272Solved: 143[Submit][Status]Description在一只大灰狼偷偷潜入Farmer Don...
分类:
其他好文 时间:
2015-01-04 16:51:02
阅读次数:
159
题目链接:HDOJ - 5155题目大意有一个 n * m 的棋盘,已知每行每列都至少有一个棋子,求可能有多少种不同的棋子分布情况。答案对一个大素数取模。题目分析算法1: 使用容斥原理与递推。 首先,一个 n * m 的棋盘不考虑任何限制时,可能的分布情况为 2^(n*m) ,除去没有棋子的情况.....
分类:
其他好文 时间:
2015-01-04 15:02:55
阅读次数:
152
题意:给出一个n行m列的点阵,求共有多少条非水平非竖直线至少经过其中两点。分析:首先说紫书上的思路,编程较简单且容易理解。由于对称性,所以只统计“\”这种线型的,最后乘2即是答案。枚举斜线包围盒的大小,如果盒子的长宽ab互质,则是可以的。这种盒子共有(m-a)(n-b)个,但要减去其中重复的。如果有...
分类:
其他好文 时间:
2015-01-03 17:10:50
阅读次数:
180
GCD
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6253 Accepted Submission(s): 2291
Problem Description
Given 5 integers: a, b, c, d...
分类:
其他好文 时间:
2014-12-31 10:05:20
阅读次数:
190
欧拉函数:表示1-(n-1)中,与n互质的数的个数
本以为学会容斥原理就不必再看欧拉函数,可是偏偏就是有些题用容斥原理解不了,必须参考欧拉,没办法只好回头看欧拉函数
下面贴一个筛法求欧拉函数模板:
//初始化eu[1]=0或者eu[1]=1,具体情况根据题目变化!
//下面计算2-10000的欧拉函数
const int MAX = 10001;
int eu[MAX];//不要忘记初始化e...
分类:
其他好文 时间:
2014-12-31 08:41:35
阅读次数:
135
输入a b c d k求有多少对x y 使得x在a-b区间 y在c-d区间 gcd(x, y) = k 此外a和c一定是1由于gcd(x, y) == k 将b和d都除以k 题目转化为1到b/k 和1到d/k 2个区间 如果第一个区间小于第二个区间 讲第二个区间分成2部分来做1-b/k 和 b/k+...
分类:
其他好文 时间:
2014-12-26 20:07:36
阅读次数:
136