找到规律之后本题就是水题了,不过找规律也不太容易的,证明这个规律成立更加不容易。
本题就是求step和mod如果GCD(最大公约数位1)那么就是Good Choice,否则为Bad Choice
为什么这个结论成立呢?
因为当GCD(step, mod) == 1的时候,那么第一次得到序列:x0, x0 + step, x0 + step…… 那么mod之后,必然下一次重复出现比x0大的数必...
分类:
其他好文 时间:
2014-07-08 19:16:21
阅读次数:
227
旋转可以分为n种置换,对应的不同等价类分别是gcd(n,i)个i=0时不动,有n个
翻转分为奇偶讨论,奇数时有n种置换,每种有n/2+1个
偶数时有n种置换,一半是n/2+1个,一半是n/2个
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;...
分类:
其他好文 时间:
2014-07-08 19:05:15
阅读次数:
163
枚举位移肯定超时,对于一个位移i,我们需要的是它的循环个数,也就是gcd(i,n),gcd(i,n)个数肯定不会很多,因为等价于n的约数的个数。
所以我们枚举n的约数,对于一个约数k,也就是循环个数为n/k这样的个数有phi[k]种,证明网上有很多。所以答案就是 phi[k]*(pow(n,n/k)) (k是n的所有约数)
由于约数会很大所以不能打表,只能单个算。
再由于最后要除以n,如果做...
分类:
其他好文 时间:
2014-07-08 14:05:43
阅读次数:
170
6073 Math MagicYesterday, my teacher taught us about math: +, -, *, /, GCD, LCM... As you know, LCM (Leastcommon multiple) of t...
分类:
其他好文 时间:
2014-07-08 12:43:37
阅读次数:
218
题目链接:uva 10951 - Polynomial GCD
题目大意:给出n和两个多项式,求两个多项式在所有操作均模n的情况下最大公约数是多少。
解题思路:欧几里得算法,就是为多项式这个数据类型重载取模运算符,需要注意的是在多项式除多项的过程中,为了保证各项系数为整数,需要将整个多项式的系数整体扩大至一定倍数,碰到先除后模的时候要用逆元。
#include
#include
...
分类:
其他好文 时间:
2014-07-05 11:00:09
阅读次数:
271
异步技术有两个:Grand Central Dispatch(GCD):系统管理线程,你不需要编写线 程代码。只需定义想要执行的任务,然后添加到适当的 dispatch queue。GCD 会负责创建线程和调度你的任务。系统直接提供线 程管理,比应用实现更加高效。Operation Queue:Ob...
分类:
其他好文 时间:
2014-07-03 20:27:30
阅读次数:
178
NSThread:利用NSThread创建和启用一个线程1.NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];,调用后调用[thread start];2.创建.....
分类:
移动开发 时间:
2014-07-03 19:12:31
阅读次数:
223
UVA 11768 - Lattice Point or Not
题目链接
题意:给定两个点,构成一条线段,这些点都是十分位形式的,求落在这个直线上的正数点。
思路:先把直线表达成a x + b y = c的形式,a,b, c都化为整数表示,然后利用扩展gcd求出x和y的通解,然后已知min(x1, x2)
值得注意的是,直线为平行坐标系的情况,要特殊判断一下
代码...
分类:
其他好文 时间:
2014-07-03 16:28:47
阅读次数:
169
描述
欧几里德算法
别名:辗转相除法
用途:计算两个正整数a,b的最大公约数
欧几里德拓展算法
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足等式:
ax+by=gcd(a,b)=d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
代码
C++ 欧几里德LL gcd (LL a, LL b) {
ret...
分类:
其他好文 时间:
2014-07-03 16:20:26
阅读次数:
198
点我点我点我!!!
接下来要做的就是模拟上述过程了。
静下来想一下自己要得到的信息。
然后拿出来,就可以了,模拟嘛,都是这样的。
#include
#include
#include
#include
using namespace std;
char str[20];
int gcd(int a,int b)
{
return a%b==0?b:gc...
分类:
其他好文 时间:
2014-07-02 09:17:57
阅读次数:
159