摘要:
有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。这题在进行判断时,发现在大于3的素数都没有环,所以判断一下这个条件,其他的就是按照题目意思进行输出。 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 5 int n; 6 int a[25]; 7 int b[25]; 8 int flag = 1; 9 10 bool prime(int x)11 {1 阅读全文
摘要:
众数问题时间限制:3000 ms | 内存限制:65535 KB难度:3描述所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数,多重集合S重的重数最大的元素成为众数。例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。输入第一行为n,表示测试数据组数。(n<30)每组测试的第一行是一个整数m,表示多重集S中元素的个数为m接下来的一行中给出m(m<100)个不大于10万的自然数(不会出现不同元素出现的次数相同的情况,如:S={11,11,22,2 阅读全文
摘要:
在poj上是3233nyist是299这题就是给你一个矩阵A 求他的A + A^2 + A^2+.....A^n %m就是一道矩阵的运算首先看这个式子我们把它进行变化F = A + A ^2 + A^3+... +A^nn为偶数是: A+A^2+...A^n/2 + A^n/2(A+A^2 +...A^n/2)n为基数时 A+A^2+..A^n/2+A^n^/2+1 + A^n/2+1(A+A^2+A^n/2)计算A^n使用矩阵快速幂 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 阅读全文
摘要:
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=640求x+x^1+x^2+....x^n %c当n为基数时;这个式子 sum(x,n)= sum(x,n/2) * pow(x,n/2+1) +xsum = (sum + x )%cn为偶数时sum(x,n) = sum(x,n/2) * pow(x,n/2) +1然后使用快速幂,乘得出结果(其实我yy了一下的,一开始没有想到。。。。。。。。) 1 #include <stdio.h> 2 3 long long chenfa(long long a,long long b,l 阅读全文
摘要:
单调递增最长子序列和解拦截导弹那题是一样一样的哦,给你一个序列 求出这个序列中最长的单调递增序列, 1 #include <stdio.h> 2 #include <string.h> 3 4 #define N 10005 5 char ch[N]; 6 char dp[N]; 7 8 int main() 9 {10 int T;11 scanf("%d",&T);12 while(T--)13 {14 int c = 1;15 int i = 0;16 int j = 0;17 scanf... 阅读全文
摘要:
递推求值时间限制:1000 ms | 内存限制:65535 KB难度:4描述给你一个递推公式:f(x)=a*f(x-2)+b*f(x-1)+c并给你f(1),f(2)的值,请求出f(n)的值,由于f(n)的值可能过大,求出f(n)对1000007取模后的值。注意:-1对3取模后等于2输入第一行是一个整数T,表示测试数据的组数(T<=10000)随后每行有六个整数,分别表示f(1),f(2),a,b,c,n的值。其中0<=f(1),f(2)<100,-100<=a,b,c<=100,1<=n<=100000000 (10^9)输出输出f(n)对10000 阅读全文
摘要:
该题就是01背包问题,一个常数优化,详细讲解见背包问题九讲就是优化他的循环次数不然会超时的 1 #include <stdio.h> 2 #include <string.h> 3 4 #define N 1000 5 6 int f[N*1003]; 7 int c[N]; 8 int w[N]; 9 10 int max(int n,int x)11 {12 return n > x?n:x;13 }14 15 int main()16 {17 int T;18 scanf("%d",&T);19 while(T--)20 {21 阅读全文
摘要:
fibonacci数列(二)时间限制:1000 ms | 内存限制:65535 KB难度:3描述In the Fibonacci integer sequence,F0= 0,F1= 1, andFn=Fn− 1+Fn− 2forn≥ 2. For example, the first ten terms of the Fibonacci sequence are:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …An alternative formula for the Fibonacci sequence is.Given an integern, your goal 阅读全文
摘要:
扩展欧几德a*x + b*y = n求该二元一次方程的解当且仅当 n % gcd(a,b) == 0所以方程 a*x+b*y=n;我们可以先用扩展欧几里德算法求出一组x0,y0。也就是a*x0+b*y0=gcd(a,b);然后两边同时除以gcd(a,b),再乘以n。这样就得到了方程a*x0*n/gcd(a,b)+b*y0*n/gcd(a,b)=n;我们也就找到了方程的一个解。 若gcd(a,b)=1,且x0,y0为a*x+b*y=n的一组解,则该方程的任一解可表示为:x=x0+b*t,y=y0-a*t;且对任一整数t,皆成立。(这个证明比较简单,就不写了) 这样我们就可以求出方程的所有解了,但 阅读全文
摘要:
扩展欧几里德算法代码: 1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 6 long long gcd_x(long long a,long long b) 7 { 8 if(b == 0) return a; 9 else10 return gcd_x(b,a%b);11 }12 13 long long judge(long long a,long long b,long long &x,long long &y)14 {15 if(b == 0)16 {... 阅读全文