数论
jiangjiashi
这个作者很懒,什么都没留下…
展开
-
青蛙的约会 (P1061)
就是用阿基里德的扩展原理来做。最终化简为a*x+b*y=c;要求的是x为整数,y的整数解,当c不能整除gcd(a,b)时,就会"Impossible"没有学过,所以看了会书也是很难才免强知道了点,自己太 笨!#include#include#include#include#includeusing namespace std;//原创 2012-08-03 16:40:17 · 486 阅读 · 0 评论 -
(easy) Goldbach's Cnjecture (P2262)
题意: 给定一个数,求其相差最大的两个素数之和为它。注意:在求prime时,变量i,j要令为long long 不会在i*i时会超过int范围。#include#include#include#include#includeusing namespace std;// freopen("C://i.txt","r",stdin);#defi原创 2012-08-03 16:59:05 · 681 阅读 · 0 评论 -
(欧拉函数) Relatives (P2407)
这题从题意可以看出就是求比从1~n - 1从有几个数和n没有公共因子, 通常的算法很简单就能够想到, 我开始也是按通常的做法写了一个, 觉得可能会TLE, 果不其然, 后来上网查了一下, 知道了欧拉函数, 这个就是求比n小的数中与n互质(也就是没有公共因子)的算法, 看来还是那些经典的算法效率比较高, 比纯用暴力试探高多了... 欧拉函数描述如下: 利用欧拉函数和它本身不同转载 2012-08-03 17:36:08 · 1269 阅读 · 0 评论 -
(公约数问题) Xenia and Hamming (356B)
题意:给出两个字符串(等长),求出其相同位置字符不同的个数。其中:字符串是一个重复的字符串,先给出一个比较短的,然后再重复N次。解法:自己体会吧#include#include#includeusing namespace std;#define N 1000010int sum[N][26]={0};char a[N],b[N];in原创 2013-10-17 10:10:18 · 1611 阅读 · 0 评论 -
CD无平方数
思路:就是会有重复的地方,把重复的地方找出来,相加或相减 ,#includeusing namespace std;#define N 1010010long long p[N]={0};long long n;long long ans;int num=0;void dfs(long long s,int j,int step){ if (s*p[原创 2013-10-28 21:35:05 · 721 阅读 · 0 评论 -
(eular)最大公约(1552)
先把该数的因子找出来。对于每个因子d,找出n/d的互素的个数,以保证其没有重复相加#include#include#includeusing namespace std;int n;int eular(int n){ int ret=1,i; for (i=2;i*i<=n;i++) if (n%i==0) { n/=i,ret*=i-1原创 2013-10-29 10:47:01 · 583 阅读 · 0 评论