随笔分类 - 算法 数论
摘要:#include<cmath> #include<cstdio> #include<vector> #include<queue> #include<cstring> #include<iomanip> #include<stdlib.h> #include<iostream> #include<a
阅读全文
摘要:奇怪的捐赠 地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,以稍慰藉心中愧疚。 麻烦的是,他有个很奇怪的要求: 100万元必须被正好分成若干份(不能剩余)。每份必须是7的若干次方元。比如:1元, 7元,49元,343元,… 相同金额的份数不能超过5份。 在满足上述要求的情况下,分成的份数越多越好! #include #include #include #include ...
阅读全文
摘要:第一题 题解: 要学会用处理没有用的数据,比如那个 **** 直接可以用记事本给替换成空格,还有后面那些xx折,可以直接用替换功能,替换了,不要傻傻的用手改。 第二题 题解: 先用埃氏筛法,把1~N (N先设置一个10000吧,不够再加)以内的素数都筛选出来,然后再枚举 1~10000(公差,不够再
阅读全文
摘要:数学问题的解决窍门 素数判定 素数判定 所谓素数: 指恰好有2个约数的整数。 判定: 因为n的约数都不超过n, 所以只要检查 2 ~ n-1 的所有整数是否整除n就能判定n是不是素数。 在此,如果d 是 n的约数, 那么 n/d也是n的约数。由n = d * n / d 可知 min(d, n/d)
阅读全文
摘要:算法描述就是: 求整数 x和y 使得 ax + by = 1. 可以发现, 如果gcd(a, b) ≠ 1,则显然无解. 反之, 如果gcd(a, b) = 1, 则可以通过拓展原来的 辗转相除法 来求解. 事实上,一定存在整数对(x, y)使得ax+by = gcd(a,b) = 1 代码如下:
阅读全文
摘要:#include #include #include #include #include using namespace std; typedef long long LL; const int maxn = 65000 + 100; //int prime[maxn + 1]; //第i个素数,保存区间内素数 bool is_prime[maxn]; //is_prime[...
阅读全文
摘要:#include #include #include #include #include #include using namespace std; const int maxn = 5000; //idea : s[0]做符号位, s[0]=0(0),1(>0),-1( 0; i--) { res += char(s[i] + '0'); //输出...
阅读全文
摘要:1 /*9876543210987654234522345 2 214748364723453452323452345 3 2147483647234523452323452345 4 181760911432744962345234523 5 2345234523434656346345634563测试数据*/ 6 #include 7 #include 8 #...
阅读全文