
数论
alfredtofu
这个作者很懒,什么都没留下…
展开
-
uva 10006 - Carmichael Numbers
<br />考同余跟快速幂取模<br />#include <stdio.h>#include <string.h>#define MAX 65001bool isPrimer[MAX];//筛选法求素数void init() { memset(isPrimer, true, sizeof(isPrimer)); isPrimer[0] = isPrimer[1] = false; for(int i = 2; i * i <= MAX; i++) { if(isPri原创 2011-04-01 13:05:00 · 562 阅读 · 0 评论 -
soj 1814
<br />水啊水啊,今天上soj,随便点了一道中文题 - -。。。中奖了,日期差计算<br />#include <iostream>#include <stdio.h>using namespace std;int y1, m1, d1;int y2, m2, d2;int mdays[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};void swap() { int tmp = y1; y1 =原创 2011-04-04 10:48:00 · 720 阅读 · 0 评论 -
uva 10061 - How many zero's and how many digits ?
<br />题目很清晰,想法也很简单,可是我做了两天。。。<br />其实考的就是因数分解跟斯特林公式。。<br />- -。。不过不能直接用斯特林公式,要逐个逐个算。。我就是因为这样,WA了两天。。。悲剧啊<br />//求数字位数,可用斯特林公式n! = sqrt(2 * PI * n) * (n / e) ^ n//求后缀0的个数://先求出B前的所有素数,并记下a * b = B的所有b,算出n!中因子b的个数#include <stdio.h>#include <string.h>原创 2011-04-05 12:19:00 · 1198 阅读 · 0 评论 -
uva 408 - Uniform Generator
<br />第一感觉,step跟mod的最大公约数应该为1,这样就满足了,尝试了一下,AC,但是不懂解释,钥匙比赛能有这感觉多好。。<br />#include <stdio.h>int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);}int main() { int step, mod; while(~scanf("%d%d", &step, &mod)) { printf("%10d%10d ", step原创 2011-04-04 13:54:00 · 1315 阅读 · 0 评论 -
uva 350 - Pseudo-Random Numbers
<br />跟前一题一样,睡醒中午觉就是爽,一看就会做。<br />其实我当时考虑到效率还打算搞个hash函数,可是。。。其实也是打了,一一对应的,哈啊<br />#include <stdio.h>#include <string.h>int z, i, m, l;bool isVis[10000];int data[10000];int count = 0;int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);原创 2011-04-04 15:35:00 · 1083 阅读 · 0 评论 -
poj 2689 Prime Distance
<br />此题不难,刚开始没思路,google一下,看到筛选两个字就马上懂了,于是开始写,刚开始是RE,于是把int都改成long long,有可能溢出- -。。后来WA,看了很久没看出来,再次google,发现了我少了个判断,就是remark,在筛选区间内的素数时,因为1前面没有素数,而我的memset会将1搞成素数,而后面都没更新,于是一直被当作是素数处理- -。。结果就悲剧了,以后做题还是要注意啊,什么边界的。。<br />#include <stdio.h>#include <string.h原创 2011-04-05 10:08:00 · 792 阅读 · 0 评论 -
uva 10879 - Code Refactoring
超级水题。。提交的时候还在疑惑呢。。。#include int main() { int n; scanf("%d", &n); for(int i = 1; i原创 2011-04-05 13:34:00 · 750 阅读 · 0 评论 -
uva 10392 - Factoring Large Numbers
<br />好水。。以至于我循环的时候都忘了开方。。。<br />#include <stdio.h>#include <string.h>#include <math.h>bool isPrime[1000001];long long prime[78500];long long pn = 0;void init() { memset(isPrime, true, sizeof(isPrime)); for(int i = 2; i * i <= 1000000; i++)原创 2011-04-05 14:04:00 · 783 阅读 · 0 评论 -
zoj 2975 Kinds of Fuwas
<br />枚举列,对每个字母算出存在多少相同的列,然后用组合数算。<br />#include <iostream>#include <cstring>using namespace std;char data[250][251];int m, n;int _num[5];inline int index(char c) { if(c == 'B') return 0; if(c == 'J') return 1; if(c == 'H') return 2; if原创 2011-05-06 01:14:00 · 1537 阅读 · 0 评论 -
sicily 2014 Dairy Queen
<br />这题用过三种方法。。堪称神题啊<br />//母函数#include <iostream>#include <cstring>using namespace std;int m1[301],m2[301];int c[8];int n;int count;int main() { cin >> n >> count; for(int i = 0; i < count; i++) cin >> c[i]; for(int i = 0; i <= n原创 2011-05-07 23:40:00 · 1831 阅读 · 0 评论 -
uva 568 - Just the Facts
//不懂,觉得大数会超时,上网搜,题解//f(i)=f(i-1)*i%10,i%5=0;//f(i)=mod(2,(n-1)%4+1))*f(n)%10,i%5!=0,n=i/5;//mod(2,(n-1)%4+1))的取值范围是2,4,6,8#include #include #include #include using namespace std;//#define TESTlong a[10001]={0, 1, 2, 6, 4, 2},b[5]={0, 2,原创 2011-04-02 21:27:00 · 1531 阅读 · 1 评论 -
uva 550 - Multiplying by Rotation
<br />通过乘法把最低位搞到最高位。<br />#include <iostream>#include <cmath>#include <string>using namespace std;//#define TESTint main() {#ifdef TEST freopen("input.txt", "r", stdin);#endif int base, n, m; while(cin >> base >> n >> m) { if(m == 1)原创 2011-04-02 19:48:00 · 1627 阅读 · 0 评论 -
uva 138 - Street Numbers
<br />//通过简单的变形可得到佩尔方程//先通过连分数求出基本解//然后用递推公式求各组解#include <stdio.h>#include <string.h>int xi = 3, yi = 1;int m, n;int main() { for(int i = 1; i <= 10; i++) { m = 3 * xi+ 8 * yi; n = 3 * yi + xi; //注意题目格式,因为这里我WA3次。。找题解才知道为什么。 pri原创 2011-04-01 13:11:00 · 799 阅读 · 0 评论 -
中大网络赛1000 C(n,m) again
第一次过的代码,0.55sec,用了化成对数的方法+大数。// source code of submission 701149, Zhongshan University Online Judge System#include#include#include#include#includeusing namespace std;typedef unsigned long long ll;ll m, n;#includeusing namespace std;co原创 2011-04-01 14:37:00 · 712 阅读 · 0 评论 -
uva 106 - Fermat vs. Pythagoras
详细分析看:http://www.cnblogs.com/devymex/archive/2010/08/14/1799713.html#include #include #include using namespace std;bool flag[1000001];int N;int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);}int main() { while(cin >> N) { mem原创 2011-04-01 16:52:00 · 863 阅读 · 0 评论 -
uva 10673 - Play with Floor and Ceil
<br />扩展欧几里德算法:找出一对整数(x, y),是的ax + by = gcd(a, b),哈哈,直接套<br />#include <iostream>#include <cmath>using namespace std;long long x, k;long long lx, ly;void gcd(long long a, long long b, long long &d, long long &p, long long &q) { if(b == 0) {原创 2011-04-01 21:53:00 · 976 阅读 · 0 评论 -
uva 128 - Software CRC
<br />//看不懂题目,百度看到题意后做://题目大意:给你一个字符串,每个字符占一个字节(即256进制数),//在后面加两个字节,使得其模34943余数为0//from:http://iamhuangguan.blog.163.com/blog/static/124497319201010118113595//输出你要加的数,十六进制输出#include <iostream>#include <string>using namespace std;#define MOD原创 2011-04-01 15:48:00 · 1161 阅读 · 2 评论 -
uva 11121 - Base -2
<br />与底为整数稍有不同,就是当被除数小于0的时候,不能用自带的取模,因为要保证余数要大过0,这样只需要把除数加大。<br />#include <iostream>#include <cmath>#include <string>using namespace std;//#define TESTint main() {#ifdef TEST freopen("input.txt", "r", stdin);#endif int n; int res; i原创 2011-04-01 22:30:00 · 755 阅读 · 0 评论 -
uva 10791 - Minimum Sum LCM
<br />漏洞百出!!<br />#include <iostream>#include <cmath>#include <string>using namespace std;int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);}//#define TESTint main() {#ifdef TEST freopen("input.txt", "r", stdin);#endif int原创 2011-04-02 00:11:00 · 1093 阅读 · 0 评论 -
uva 575 - Skew Binary
<br />简单的进制转换<br />#include <iostream>#include <cmath>#include <string>using namespace std;//#define TESTint main() {#ifdef TEST freopen("input.txt", "r", stdin);#endif string s; while(cin >> s && s[0] != '0') { int ans = 0; for(i原创 2011-04-02 18:56:00 · 738 阅读 · 0 评论 -
uva 10110 - Light, more light
<br />刚开始分析是直接枚举,1~sqrt(n),想着想着都是偶数对啊,应该全是no,但是样例有yes,再细想,就发现如果是平方数那就没配对了,这样只需要判断是否平方数,可惜交的时候WA啊!!也不知道为什么,把int改为long就AC了,但题目说n <= 2^32 - 1啊。。int范围啊,怎么回事。。。<br />#include <iostream>#include <cmath>#include <string>using namespace std;//#define TEST原创 2011-04-02 19:18:00 · 1252 阅读 · 2 评论 -
hdu 1709 The Balance
<br />母函数<br />#include <iostream>#include <cmath>using namespace std;int n, data[101];bool m1[10001], m2[10001];int main(){ while(cin >> n){ int sum = 0; for(int i = 0; i < n; i++) { cin >> data[i];原创 2011-05-07 23:40:00 · 722 阅读 · 0 评论