
数学思维_习题
文章平均质量分 56
yurio7r
ipy8pyp
展开
-
UVA 10341 Solve It
简单题目,数学题,二分,不断向中间逼近!#include #include #include using namespace std;double q,p,r,s,t,u;const double EXP=1e-7;double jud(double x){ return p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;}int mai原创 2015-10-19 23:34:51 · 400 阅读 · 0 评论 -
51nod 1058 N的阶乘的长度
因为是计算长度,则可以看成是10^x = 阶乘值,然后分别对两边求对数,答案就有了。#include #include int main(){ long long num; double cnt = 0.0; std::cin >> num; for (long long i = 1; i != num + 1; ++i) {原创 2016-03-03 17:05:41 · 611 阅读 · 0 评论 -
51nod 1073 约瑟夫环
wiki上有约瑟夫斯问题的说明。#include int fun(int n, int k){ int res = 0; for (int i = 2; i <= n; ++i) { res = (res + k) % i; } return res;}int main(){ int n, k; std::原创 2016-03-05 10:45:17 · 1076 阅读 · 0 评论 -
51nod 1130 N的阶乘的长度V2(斯特林近似)
哎,e的位数让我一直错。。#include #include typedef long long ll;#define PI 3.1415926#define E 2.718281828459int main(){ int t; std::cin >> t; while (t--) { ll n; std::cin原创 2016-03-05 20:37:36 · 1635 阅读 · 0 评论 -
51nod 1080 两个数的平方和
暴力遍历。#include int main(){ int num; std::cin >> num; bool flag = false; for (int i = 0, j = 34000; i <= j; ++i) { for (;i <= j && num <= i * i + j * j; --j) { //std::cout << i << ' '原创 2016-03-06 11:09:47 · 488 阅读 · 0 评论 -
51nod 1015 水仙花数
暴力,先写个小程序计算出四位数的最小水仙花数,因为M《=1000,所以当前面的条件不满足时,就直接打印这个1634就行了。#include int pow3(int a){ return a * a * a;}int main(){ int num; std::cin >> num; for (int i = num; i <= 99; ++i) { if (原创 2016-03-06 11:35:46 · 612 阅读 · 0 评论 -
51nod 1087 1 10 100 1000
这就是一个等差数列,用到了求和公式n * (1 + n) / 2,我在代码中直接把分母移过去了,好比较。 通过这个来判断n的位置就行了。#include int main(){ int t; std::cin >> t; while (t--) { int n; std::cin >> n; int i; for (i = 1;;++i) { if (i原创 2016-03-06 13:00:24 · 539 阅读 · 0 评论 -
51nod 1182 完美字符串
声明一个数组来存字符串每个字符出现的次数。然后用一下sort()就好了。#include #include #include #include #include const int MAX = 1e5 + 5;char arr[MAX];int sum[150];int main(){ scanf("%s", arr); int lenth = strlen(arr)原创 2016-03-06 14:01:01 · 586 阅读 · 0 评论 -
51nod 1381 硬币游戏
举个例子,画四条平行的直线,距离都为1,然后画一个圆在线上平行移动,百分之99的概率都有两条直线相交,很小的概率是相切,把相切的概率近似为0,由期望的公式可以得到期望等于2.#include int main(){ int t; std::cin >> t; while (t--) { int r; std::cin >> r; std::cout << 2 * r原创 2016-03-06 15:41:50 · 802 阅读 · 0 评论 -
51nod 1090 3个数的和为0
暴力#include #include #include const int MAX = 1e3 + 5;int arr[MAX];int main(){ std::ios::sync_with_stdio(false); int num; std::cin >> num; for (int i = 0; i != num; ++i) { std::cin >>原创 2016-03-07 22:23:35 · 715 阅读 · 0 评论 -
51nod 1091 线段的重叠
贪心,记录前面末尾坐标最长的点#include #include #include const int MAX = 5e4 + 5;struct NODE{ int st; int ed;}segment[MAX];bool comp(NODE a, NODE b){ return a.st == b.st ? a.ed < b.ed : a.st < b.st;}原创 2016-03-07 23:24:14 · 904 阅读 · 0 评论 -
51nod 1003阶乘后面0的数量
判断从1到num包含多少个因子5。#include int main(){ int sum = 0, num; std::cin >> num; while (num) { num /= 5; sum += num; } std::cout << sum << std::endl; return 0;}原创 2016-02-29 19:27:44 · 508 阅读 · 0 评论 -
51nod 1008 N的阶乘mod P
#include int main(){ int n, p; std::cin >> n >> p; int i = 1; long long res = 1; for (; i <= n; ++i) { res = i * res % p; } std::cout << res << std::endl; return 0;}原创 2016-02-29 19:35:56 · 1004 阅读 · 0 评论 -
hihocoder 1501 补提交卡
描述给出一个数组,求两个数之间最大的差距。解决贪心遍历#include <iostream>#include <vector>using namespace std;int main(){ int n; cin >> n; while (n--) { int N, M; cin >> N >> M; vector<i原创 2016-10-23 21:15:41 · 322 阅读 · 0 评论 -
hdu 1575 Tr A
矩阵的快速幂。。。#include #include #include typedef long long ll;typedef std::vector vec;typedef std::vector mat;const int MODE = 9973;mat mul(mat& A, mat& B){ mat C(A.size(), vec(B[0].size())); l原创 2016-03-03 14:53:55 · 313 阅读 · 0 评论 -
51nod 1049 最大子段和
#include typedef long long ll;const int MAX = 5e4 + 5;ll arr[MAX];int main(){ ll num; std::cin >> num; bool flag = true; for (ll i = 0; i != num; ++i) { std::cin >> arr[i]; if (arr[i]原创 2016-03-02 22:27:15 · 562 阅读 · 0 评论 -
CF Dinner with Emma 616B
#include #include const int MAX = 105;int arr[MAX][MAX];int main(){ int n, m, res = 0; std::cin >> n >> m; for (int i = 0; i != n; ++i) { int max = 0x3f3f3f3f; for (int j = 0; j != m; +原创 2016-01-15 12:48:10 · 639 阅读 · 0 评论 -
UVA 11526 H(n)
这道题就是考思维吧。刚开始第一次写,超时了,然后仔细看了H(n)那个函数,发现n/i这个会自动向下取整,意识到会有很多重复的数字,比方说,如果n=10,当i>5时,这个时候,n/i的值都是1,所以就必须优化这个函数!我为了便于思考,自己把n想成100,则i为51~100的值时,n/i都是1,所以我得到一个算法res+=(tmp-n/i)*(i-1),然后注意判断一下条件就解决这个问题了。#incl原创 2015-10-20 20:28:56 · 810 阅读 · 0 评论 -
UVA 1612 Guess
#include#include#include#define maxn 20000using namespace std;struct player{ int score[8];}P[maxn];int n, ID[maxn];int main() { int cas = 1; while(scanf("%d", &n) == 1 && n) {转载 2015-10-21 23:51:39 · 539 阅读 · 0 评论 -
UVA 10217 A Dinner with Schwarzenegger!!!
#include #include #include using namespace std;int main(){ int n; while(cin>>n) { printf("%.2lf ",(-1+sqrt(4*n+1))/2.0); cout<<(int)((1+sqrt(4*n+1))/2)<<endl; } return 0;}原创 2015-10-22 19:38:53 · 415 阅读 · 0 评论 -
ZOJ-3633-Alice's present
DescriptionAs a doll master, Alice owns a wide range of dolls, and each of them has a number tip on it's back, the tip can be treated as a positive integer. (the number can be repeated). One day,原创 2015-10-08 13:54:21 · 601 阅读 · 0 评论 -
lightOJ 1005 - Rooks
简单的数学题,排列组合的问题#include #include using namespace std;typedef long long ll;ll c(ll m, ll n){ ll ans = 1, i; for (i = 1; i <= n ; i++) { ans *= m - i + 1; ans /= i; } return ans;}in原创 2015-11-24 00:02:09 · 522 阅读 · 0 评论 -
lightOj 1107 - How Cow
#include #include using namespace std;int main(){ int T,cas=0; cin>>T; while(T--) { double x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; int t; cin>>t; printf("Case %d:\n",++cas)原创 2015-11-18 01:52:15 · 547 阅读 · 0 评论 -
lightOJ 1008 - Fibsieve`s Fantabulous Birthday
//观察每个小的方阵,就是不停的平方啊!!!然后找规律#include #include #include using namespace std;int main(){ int T,cas=0; cin >> T; while(T--) { long long num; cin >> num; double tmp = sqrt(double(num)); tmp = tmp==(int)t原创 2015-11-18 22:55:30 · 486 阅读 · 0 评论 -
lightOJ 1227 - Boiled Eggs
贪心,一定要先sort一遍。。。。。。#include #include #include using namespace std;int arr[35];int main(){ std::ios::sync_with_stdio(false); int T,cas=0; cin >> T; while (T--) { int n,p,q,res=0,原创 2015-11-19 20:08:52 · 802 阅读 · 0 评论 -
51nod 1256 乘法逆元
模板题目,扩展欧几里得#include using namespace std;int a,b,x,y;int exGcd(int a, int b, int& x, int& y){ if (b == 0) { x = 1; y = 0; return a; } int g = exGcd(b,a%b,x,y); int tmp =原创 2015-11-28 16:52:57 · 787 阅读 · 0 评论 -
51nod 1004 n^n的末尾数字
快速幂取模#include using namespace std;typedef long long ll;ll pow(ll a, ll b){ ll r = 1; while (b) { if (b & 1) { r *= a; r %= 10; } a *= a; a %= 10; b >>= 1; } return r;原创 2015-12-05 16:53:44 · 667 阅读 · 0 评论 -
51Nod 1001 数组中和等于K的数对
算法的复杂度还是O(n^2),。。#include #include using namespace std;const int MAX = 5e5;int arr[MAX];int main(){ int K, n; cin >> K >> n; for (int i = 0; i < n; i++) cin >> arr[i]; bool flag = fa原创 2015-12-26 20:42:52 · 796 阅读 · 0 评论 -
51nod 1019 逆序数
参考了《数据结构与算法分析》中归并排序的算法。#include const int MAX = 5e4 + 5;int res;int arr[MAX];int arr2[MAX];void mergesort(int a[], int tmp[], int l, int r){ if (l == r) return ; int m = (l +原创 2016-03-01 20:07:38 · 943 阅读 · 0 评论 -
51nod 1046 A^B Mod C
快速幂取摸#include typedef long long ll;ll pow(ll a, ll b, ll c){ ll res = 1; while (b) { if (b & 1) { res = (res * a) % c; } a = a * a % c; b >>= 1; } return res;}int main(){原创 2016-03-01 20:34:28 · 622 阅读 · 0 评论 -
lightOj1006 Hex-a-bonacci
#include #include using namespace std;const int mode=10000007;int main(){ int T,cas=0; cin>>T; int arr[10001]={0}; while(T--) { int a,b,c,d,e,f,n; cin>>a>>b>>c>>d>>e>>f>>n;原创 2015-11-17 16:36:39 · 569 阅读 · 0 评论