数论
Cifer
这个作者很懒,什么都没留下…
展开
-
HDOJ 4228 Flooring Tiles (反素数)
~~~题目链接~~~ 题目大意:现有若干面积相同的小正方行, 给出n种面积相同的长方行, 问用最少用多少个正方行能恰好拼出n种长方行, 如n = 2, 这时最少用4个正方行可拼出2中长方形, 分别是1*4, 和2*2面积相同的长方形。 定义 对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0原创 2012-11-17 19:25:49 · 666 阅读 · 0 评论 -
vijos P1033 整数分解(版本2)
~~~题目链接~~~ 思路: 3 = 1+2 4 = 2+2 5 = 2+3 6 = 3+3 7 = 2+2+3 8 = 2+3+3 9 = 3+3+3 10 = 2+2+3+3 ..........通过分解发现把一个数分解成尽可能多的2与3就为最大值。 code: #include #include #include using namespace std;原创 2012-11-08 20:15:06 · 722 阅读 · 0 评论 -
POJ 1061 青蛙的约会
~~~题目链接~~~ 思路:设青蛙要跳x次才相遇, 可得方程 (a+xm)%L = (b+xn)%L 推出 x(m-n) + yL = b-a. 根据扩展欧几里德算法可求出一组x(m-n) + yL = gcd(m-n, L)的一组解, 当(b-a)为gcd(m-n, L)的倍数时原方程才有整数解, 现在要求求最小的跳动次数x, 思想参考了ComeOn4MyDream的~~资料~~原创 2012-08-05 16:34:32 · 1361 阅读 · 3 评论 -
vijos p1042 捕风捉影
~~~题目链接~~~ 思路:这的上限为100000000, 直接对每个数判断要超时, 后来打表发现了最多到10000000有数, 这之后的数都不符合要求。所以上限调整为10000000 code: #include #include #define N 10000002 using namespace std; int is_prime(int x) { int原创 2012-11-07 23:17:51 · 706 阅读 · 0 评论 -
HDOJ 1262 寻找素数对
~~~题目链接~~~ 水过 #include #include int main() { int i = 0, j = 0, sum = 0, p[10002] = {0}; p[0] = p[1] = 0; for(i = 2; i<10002; i++) if(i%2) p[i] = 1; else p[i] =原创 2012-09-13 18:54:41 · 398 阅读 · 0 评论 -
POJ 2115 C Looooops
~~~题目链接~~~ 题目大意:根据题中的c语言for循环表达式, 判断这个循环要几次结束, 或永远不结束, 当内存达到上限时又从0开始。 思路: 与POJ 1061一样, 根据表达式(a+c*x)%1 Ps:要用(__int64)1 code: #include #include void gcd(__int64 s1, __int64 s2, __int64原创 2012-08-05 18:55:35 · 568 阅读 · 0 评论 -
HDOJ 2669 Romantic (扩展欧几里德)
~~~题目链接~~~ 思路:扩展欧几里德,通过扩展欧几里德算法求出X与Y, 它的任意解为(X+K*B', Y-KA') A' = A/gcd(a,b) B' = B/gcd(a,b) code: #include void gcd(long a, long b, long &d, long &x, long &y) { if(!b) {d = a; x = 1;原创 2012-08-03 17:28:22 · 588 阅读 · 0 评论 -
HDOJ 2136 Largest prime factor
~~~题目链接~~~ 题目大意:先给出一个数, 要求求它的最大素数因子 思路:找出所有的素数因子,选最大的 Ps:太容易超时了,wa了半天 code: #include #include #define max 1000010/2 int ans = 0, num[2*max], isprime[2*max]; void prime_factor(int x) {原创 2012-08-04 19:59:35 · 644 阅读 · 0 评论 -
HDOJ 2161 Primes (判断素数)
~~~题目链接~~~ 题目大意:给出一个数判断它是不是素数, 本题中1和2不是素数 简单题 code: #include #include int is[16002]; int is_prime(int x) { int i = 0, j =(int)sqrt(x); for(i = 2; i<=j; i++) if(x%i == 0原创 2012-08-04 13:11:19 · 518 阅读 · 0 评论 -
POJ 2305 Basic remains (大数余)
~~~题目链接~~~ code: #include #include #include #include using namespace std; int a = 0, b = 0, k = 0, x = 0, y = 0; void translate1()//把k进制的数转化为10进制 { int cnt = 0; x = y = 0; whil原创 2012-11-19 22:47:54 · 853 阅读 · 1 评论