找到规律之后本题就是水题了,不过找规律也不太容易的,证明这个规律成立更加不容易。
本题就是求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
枚举位移肯定超时,对于一个位移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
题目链接: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
题目给你一个N,让你求 两个数字 A,B,且 A>=B
N的范围是 3*10^7大的吓人一开始没敢想构造,因为就算构造开的数组也太大了,已经10^7了,后来想了半天在^运算这里也没有想出来什么,所以没办法还是大胆构造吧,构造就去按照他题目的意思来了,构造两个数字 i,j其中j是i的倍数,那么j + i与i的最大公约数肯定是i了,那么(j+i)^i == i这样构造出来的就算满足了,然...
分类:
其他好文 时间:
2014-07-02 08:32:37
阅读次数:
217
题目链接:uva 11426 - GCD - Extreme
题目大意:给出n,求∑i!=jngcd(i,j)
解题思路:f(n)=gcd(1,n)+gcd(2,n)+?+gcd(n?1,n)
S(n)=f(2)+f(3)+?+f(n)
S(n)=S(n?1)+f(n)
问题转化成怎么求f(n),对于一个n来说,枚举因子乘上个数即可。
#include
#include ...
分类:
其他好文 时间:
2014-07-02 07:36:59
阅读次数:
304