摘要: 题意:N×M的网格其中有一条边坏掉了,问从起点到终点的放法数。 分析:数学公式 如果没有坏边的话,总放法数是CN-1(M+N-2) 因为每种方法都要走(M+N-2)步,向上走M-1步,向右走N-1步 现在考虑一条坏边,那么就计算经过这条坏边的方案数然后从总数里面减去经过坏边的方案数即可 经过坏边的方 阅读全文
posted @ 2019-10-19 22:29 ljy3268 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题意:这道题目考察的n个不同的数环形排列,每次相邻两个数交换位置,这样由正序转变成逆序所需操作的最小次数t。 思路: 如果所有人是线性排列,那我们的工作就是类似冒泡程序做的工作:1,2,3,4,5变为5,4,3,2,1 ,耗时n(n-1)/2 但是出现了环,也就是说1,2,3,4,5变为3,2,1, 阅读全文
posted @ 2019-10-19 22:07 ljy3268 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 题意:给出a,b,求a~b间平方数的个数。 思路:sqrt(b) - sqrt(a-1),注意一下精度误差。 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 5 int main () { 6 int a, b; 7 阅读全文
posted @ 2019-10-19 21:57 ljy3268 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个人,选多个人参加比赛,其中一个是队长,队长不同其他选手相同也算作不同的方案,问你一共有多少种方案。 思路:可以想到 答案为 1*C(1,n)+2*C(2,n)+3*C(3,n)+....+n*C(n,n); 由公式 k*C(k,n) = n*C(k-1,n-1) 所以最终答案 n*2^( 阅读全文
posted @ 2019-10-19 21:55 ljy3268 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目大意:计算从1,2,3,...,n中选出3个不同的整数,使得以它们为边长可以构成三角形的个数。思路:用一般的方法需要三重循环,时间复杂度为O(n^3),肯定超时,因此可用数学的方法对问题进行分析。设最大边长为x的三角形有c(x)个,另外两边长分别为y,z,则可得x-y<z<x;固定x枚举y,计算 阅读全文
posted @ 2019-10-19 21:31 ljy3268 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题意:给出n个数,每相邻两个数求平均数,将得到n-1个数,这n-1个数每相邻的两个数求平均值,将得到n-2个数。一次类推,求最后得到的那个数的值。 思路: 可以很简单的推出每个数a[i]最后对答案的的贡献系数是 C(n-1,i-1) / 2^(n-1) ,但是不能直接照着这么算,精度会爆炸。 我们取 阅读全文
posted @ 2019-10-19 20:54 ljy3268 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 题意: 输入正整数n,统计有多少a<=b满足lcm(a,b)=n。输出n以及满足条件的整数对数。 思路: 根据素因子分解求最小公倍数的算法,可以的得出这样的结论。如果对一个数进行素因子分解,那么思路就明显了1. 设n=lcm(a,b)=(p1^r1)*(p2^r2)*(p3^r3)…(pm^rm)又 阅读全文
posted @ 2019-10-19 20:28 ljy3268 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题意:把K个不超过N的非负整数加起来,使得它们的和为N,有多少种方法 思路: 令dp[i][j]为和为i用了j个数的方案数,那么转移就是dp[i][j]=dp[i-1][j]+dp[i][j-1] dp[i-1][j]表示在和为i-1用了j个数的方案中,最后一个数+1 dp[i][j-1]表示在和为 阅读全文
posted @ 2019-10-19 19:29 ljy3268 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 题意:给出A,C,找出最小的C使得lcm(A,B)=C 思路:lcm=(a*b)/gcd,把等号两侧同时除以a得到lcm/a=b/gcd左侧是已知的,右侧的gcd是a的因子中的一个,直接枚举a的所有因子找到答案就行了。 1 #include<math.h> 2 #include<stdio.h> 3 阅读全文
posted @ 2019-10-19 17:49 ljy3268 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 题目:给出gcd(a,b)和lcm(a,b),求a,b使得最小。 分析:简单题、数论。如果lcm%gcd != 0则不存在,否则a=gcd,b=lcm。 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 int 阅读全文
posted @ 2019-10-19 16:32 ljy3268 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题意:求质因子最大的数 思路:线性筛打表即可 1 #include<iostream> 2 #include<string.h> 3 using namespace std; 4 const int maxn = 20000+10; 5 bool vis[maxn]; 6 int prime[max 阅读全文
posted @ 2019-10-19 16:26 ljy3268 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个区间 [l, r] 求其中相邻的距离最近和最远的素数对 . 其中 1 <= l < r <= 2,147,483,647, r - l <= 1e6 . 思路: 素数区间筛 要找到 [l, r] 中相邻最近和最远的素数对肯定是需要找出 [l, r] 内所有素数 . 但是无论是直接线性 阅读全文
posted @ 2019-10-19 15:53 ljy3268 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 线性筛筛素数: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e7; 4 bool vis[maxn]; 5 int prime[maxn]; 6 int f(int n)//计算从1到n的素数个数 7 { 阅读全文
posted @ 2019-10-19 14:45 ljy3268 阅读(97) 评论(0) 推荐(0) 编辑