【其他】
文章平均质量分 71
张松超
这个作者很懒,什么都没留下…
展开
-
NSWOJ ~1109 ~ Fibonacci数
1109 - Fibonacci数时间限制:3秒 内存限制:128兆113 次提交 79 次通过提交题目描述无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为F(n)=1 ...........(n=1或n=2)F(n)=F(n-1)+F(n-2).....(n>2)现要你来求第n个斐波纳奇数。(第1个、第二个都为1)输入第一行是一个整数m(转载 2017-04-06 15:02:45 · 384 阅读 · 0 评论 -
Codeforces ~ 1076C ~ Meme Problem (一元二次方程求解)
题意a+b=da+b=da+b=da∗b=da*b=da∗b=dT组测试数据,每组给你非负整数ddd,问方程是否存在非负解aaa和bbb,存在输出‘Y’,a,b,否则输出’N’。思路b=d−ab=d-ab=d−aa∗(d−a)=da*(d-a)=da∗(d−a)=d,推得a2−da+da^2 - da + da2−da+d通过求根公式(−b±b2−4ac2a\frac{-b±\s...原创 2018-11-14 21:29:49 · 480 阅读 · 0 评论 -
UVA ~ 11809 ~ Floating-Point Numbers (数学,思维)
题意思路假设该数字表示为X∗2YX*2^YX∗2Y,那我们要求解的就是X∗2Y=A∗10BX*2^Y=A*10^BX∗2Y=A∗10B,M=(X的位数),E=(Y的位数)如果直接去计算这个数字的话会很大,因为Y有30位长,这个数大概也就是210302^{10^{30}}21030肯定是会炸的,所以想办法把这个数字去缩小一下,很容易想到使用logloglog取对数的方式。log10(X...原创 2018-11-15 19:55:50 · 205 阅读 · 0 评论 -
CodeFroces ~ 987B ~ High School: Become Human (log)
题意:给你x和y,问你x^y和y^x次方的大小。思路:我们可以用取对数的方法进行比较,但是可能会有精度问题,所以当x==y的时候答案一定为=。#include<bits/stdc++.h>using namespace std;int x, y;int main(){ scanf("%d%d", &x, &y); char ans; if...原创 2018-05-31 18:27:10 · 420 阅读 · 0 评论 -
HDU ~ 5391 ~ Zball in Tina Town (威尔逊定理)
题意:T组测试数据,每组数据一个N, 求 (N-1)!%p ?思路:威尔逊定理:当且仅当p为素数时:( p - 1)! ≡ -1 ( mod p ),但是4的时候是个例外,(4-1)!≡ 2(mod 4)。素数判定用朴素的比较慢,可以用Miller_Rabbin测试判素。#include<bits/stdc++.h>using namespace std;bool isprime(...原创 2018-04-11 14:19:36 · 196 阅读 · 0 评论 -
HDU ~ 6287 ~ 口算训练 (思维 + 分解质因数 + 二分)
题意:小Q非常喜欢数学,但是他的口算能力非常弱。因此他找到了小T,给了小T一个长度为nn的正整数序列a1,a2,...,ana1,a2,...,an,要求小T抛出mm个问题以训练他的口算能力。 每个问题给出三个正整数l,r,dl,r,d,小Q需要通过口算快速判断al×al+1×...×ar−1×aral×al+1×...×ar−1×ar是不是dd的倍数。 小Q迅速地回答了出来,但是小T并不知道正确...原创 2018-05-29 15:36:51 · 1107 阅读 · 0 评论 -
POJ ~ 2109 ~ Power of Cryptography (数学)
题意:k^n = p,给你n,p求k。思路:其实也就是求p^(1/n)。double类型存储方式是,第一部分表示符号位,第二部分表示指数,第三部分为尾数部分。所以double能存很大的数字但是会有精度损失。对于本题,可以用泰勒公式计算得到这个误差在可接受范围之内。具体怎么算的我也不会,哈哈哈。//#include<bits/stdc++.h>#include<iostream&...原创 2018-04-09 15:50:32 · 191 阅读 · 0 评论 -
POJ ~ 1019 ~ Number Sequence (模拟 or 数学规律)
题意:给你一个串数字1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678910 1234567891011 123456789101112······k很容易发现规律,T组测试数据,每组输入一个n,问这个序列的n位置是哪个数字?思路:两种方法:①模拟 ②数学方法方法一:模拟,如果直接模拟这个序列太长,放不下。我们可以发现前面这...原创 2018-04-18 16:30:09 · 180 阅读 · 0 评论 -
UVA ~ 11300 ~ Spreading the Wealth (数学推导 + 中位数性质)
题意:圆桌旁坐着n个人,每个人有一定数量的金币,金币总数总能被n整除。每个人可以给他左右相邻的人的一些金币,最终使得每个人的金币数目相等。你的任务是求出被转手的金币数量的最小值。比如,n=4,且四个人的金币数量分别为1,2,5,4,只需要转移4枚金币(第3个人给第2个人两枚金币,第2个人和第4个人分别给第1个人1枚金币)即可实现每人手中的金币相等。思路:首先我们能轻易的计算出最终每个人手中的金币数...原创 2018-03-27 09:49:19 · 355 阅读 · 0 评论 -
两个日期之间的天数
由于会有好多题中涉及到两个日期之间天数的计算,所以找到一个好用模板;输入开始的年,月,日到结束的年,月,日;#include using namespace std;int day(int year,int month,int day)//到0年3月1日的天数{ int m=(month+9)%12,y=year-m/10; return 365*y+y/4-y/100+y/400+原创 2017-04-26 15:23:36 · 811 阅读 · 0 评论 -
最大公约数与最小公倍数(gcd,lcm)
先来说求最小公约数的方法1.欧几里得算法(辗转相除法)int gcd(int a,int b) { return b==0?a:gcd(b,a%b);}设两数为a、b(a>b),用gcd(a,b)表示a,b的最大公约数,r=a (mod b) 为a除以b的余数,k为a除以b的商,即a÷b=k.......r。辗转相除法即是要证明gcd(a,b)=gcd(b,r)。第一原创 2017-07-19 16:52:56 · 3505 阅读 · 0 评论 -
HDU ~ 1018 ~ Big Number (log应用)
题意:T组测试数据,每组输入一个N,求N!(N的阶乘)的位数。思路:log应用。log(1*2*3*...*N) = log(1)+log(2)+log(3)+...+log(N) + 1#includeusing namespace std;int main(){ int T, n; scanf("%d", &T); while (T--) {原创 2018-02-03 20:13:20 · 240 阅读 · 0 评论 -
Codeforces ~ 1062B ~ Math(思维,因数分解)
题意给你一个数,现在有两种操作:①将这个数字乘以x②将x开根号问这个数字最小能变成的数字是多少,最少需要多少次操作思路把n分解质因数以后。开方不能减少素因子的种类,但是能够减少每个素因子的幂,每次开方相当于幂/2。所以最小数一定是每种素因子相乘,最小操作次数就是开方次数+乘法次数。如果所有幂值都是222的同一个次方,接下来就是一直幂/2了,否则我们就要先通过一次乘法将所有幂值变为...原创 2018-11-19 19:17:08 · 657 阅读 · 0 评论