数学相关
f_zyj
一个追逐蝴蝶的人!
展开
-
BSG白山极客挑战赛-A-数数字
统计一下 aaa ⋯ aaan个a × b 的结果里面有多少个数字d,a,b,d均为一位数。 样例解释: 3333333333*3=9999999999,里面有10个9。Input 多组测试数据。 第一行有一个整数T,表示测试数据的数目。(1≤T≤5000) 接下来有T行,每一行表示一组测试数据,有4个整数a,b,d,n。 (1≤a,b≤9,0≤d≤9,1≤n≤10^9) Ou原创 2016-05-20 21:30:37 · 784 阅读 · 0 评论 -
51Nod-1003-阶乘后面的0的数量
n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。 Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1这道题关键是分析0是由谁提供的,经过分析我们可以知道,2X5=10会提供一个0,因为因子2的个数会远远多于因子5的个数,所以我们需要做的就是将所有的5的倍数都拆分为原创 2016-05-17 22:35:57 · 900 阅读 · 0 评论 -
51Nod-1004-n^n的末位数字
给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。 Input 一个数N(1 <= N <= 10^9) Output 输出N^N的末位数字 Input示例 13 Output示例 3一道规律题,幂的末位数的规律为四次一循环,所以……#include <stdio.h>#include <math.h>int main(){ int a, b, c;原创 2016-05-17 21:08:20 · 1716 阅读 · 0 评论 -
51Nod-1016-水仙花数 V2
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153,1634 = 1^4 + 6^4 + 3^4 + 4^4)。 给出一个整数M,求 >= M的最小的水仙花数。 Input 一个整数M(10 <= M <= 10^60) Output 输出>= M的最小的水仙花数,如果没有符合条件的水仙花数,则输出:原创 2016-05-17 01:12:30 · 1885 阅读 · 3 评论 -
51Nod-1135-原根
设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数) 给出1个质数P,找出P最小的原根。 Input 输入1个质数P(3 <= P <= 10^9) Output 输出P最小的原根。 Input示例 3 Output示例 2我一定会被数论折磨死的,完全的知识空白,什么是原根?设m是正整数,a是整数,若a模m的阶等于φ(m),则称原创 2016-04-30 14:21:16 · 793 阅读 · 0 评论 -
51Nod-1284-2 3 5 7的倍数
给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。 Input 输入1个数N(1 <= N <= 10^18)。 Output 输出不是2 3 5 7的倍数的数共有多少。 Input示例 10 Output示例 1一道特别烧脑子的数学题,毕竟我数学不是太用功,用到了容斥原理,对重复的减的加回来,对重复加的也要减去。代码(原创 2016-05-16 22:33:02 · 675 阅读 · 0 评论 -
51Nod-1305-Pairwise Sum and Divide
有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:fun(A) sum = 0 for i = 1 to A.length for j = i+1 to A.length sum = sum + Floor((A[i]+A[j])/(A[i]*A[j])) return sum给出数组A,由你来计算f原创 2016-05-15 17:05:57 · 1069 阅读 · 0 评论 -
51Nod-1106-质数检测
给出N个正整数,检测每个数是否为质数。如果是,输出”Yes”,否则输出”No”。 Input 第1行:一个数N,表示正整数的数量。(1 <= N <= 1000) 第2 - N + 1行:每行1个数(2 <= S[i] <= 10^9) Output 输出共N行,每行为 Yes 或 No。 Input示例 5 2 3 4 5 6 Output示例 Yes Yes No原创 2016-04-27 00:50:31 · 1609 阅读 · 0 评论 -
51Nod-1347-旋转字符串
S[0…n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后半段一样。比如”abcabc”是对串,”aabbcc”则不是。 现在问题是给定一个字符串,判断他是否可以由一个对串旋转任意次得到。Input 第1行:给出一个字符串(字符串非空串,只包含小写字母,长度不原创 2016-05-14 18:25:27 · 1607 阅读 · 1 评论 -
51Nod-算法马拉松13-C-比大小
有两个数列A和B 已知A_0,a,b,N A_n=A_(n-1)*a+b (n>=1) B数列满足 B_n=2*B_(n/2) + 1 (n为偶数) B_n=2*B_((n-1)/2) + (n+1)/2 (n为奇数)现在问B数列的第A_N项和第(A_N)+1项的关系T组数据 A_0,a,b,N<=1e15 T<=100 Input 一个数T,数据组数 每行四个数A_0,a,b,原创 2016-05-06 02:45:57 · 691 阅读 · 0 评论 -
POJ-1061-青蛙的约会
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你原创 2016-04-28 03:17:06 · 802 阅读 · 0 评论 -
51Nod-1013-3的幂的和
求:3^0 + 3^1 +…+ 3^(N) mod 1000000007 Input 输入一个数N(0 <= N <= 10^9) Output 输出:计算结果 Input示例 3 Output示例 40这道题很明显需要用到快速求幂,但是简单的快速求幂无法满足这道题的要求,如何求和是一个很重要的问题,求和有一个简单的方法,也有一个复杂的,先说复杂的,虽然复杂却容易理解。#includ原创 2016-04-24 03:20:11 · 1143 阅读 · 2 评论 -
51Nod-1079-中国剩余定理
一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。 Input 第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10) 第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 <= P <= 100, 0 <= K <原创 2016-04-21 19:16:58 · 1223 阅读 · 0 评论 -
51Nod-1073-约瑟夫环
N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。 例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。 Input 2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6) Output 最后剩下的人的编号 Input示例 3 2 Output示例 3一个神奇的算法,原创 2016-04-21 19:14:27 · 875 阅读 · 0 评论 -
51Nod-1072-威佐夫游戏
有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。 例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000原创 2016-04-21 19:13:02 · 1719 阅读 · 0 评论 -
51Nod-1069-Nim游戏
有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。 例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。 Input 第1行:一个数N,表示有N堆石子。(1 <= N <= 1000) 第2 -原创 2016-04-21 19:10:42 · 1670 阅读 · 0 评论 -
51Nod-1066-Bash游戏
有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。 例如N = 3,K = 2。无论A如何拿,B都可以拿到最后1颗石子。 Input 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000) 第2 - T + 1行:每行2个数N,K原创 2016-04-21 19:08:38 · 1083 阅读 · 0 评论 -
51Nod-1058-N的阶乘的长度
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。 Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Input示例 6 Output示例 3遇见这样的题,直接的思路就是用斯特林公式。 //n!=sqrt(2*PI*n)*(n/e)^n 这是求近似值 做相应的变换即可求得。#include <stdio.h>#inclu原创 2016-04-19 13:47:16 · 1458 阅读 · 0 评论 -
51Nod-1057-N的阶乘
输入N求N的阶乘的准确值。 Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Input示例 5 Output示例 120遇见这道题,也是我的运气,因为以前根本没有想过这种高精度的题还可以这样子做,太神奇了,先发一下我原来的做法。#include <stdio.h>#include <string.h>#define _MAX 6#define原创 2016-04-19 02:14:25 · 2065 阅读 · 2 评论 -
51Nod-1046-A^B Mod C
给出3个正整数A B C,求A^B Mod C。 例如,3 5 8,3^5 Mod 8 = 3。 Input 3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9) Output 输出计算结果 Input示例 3 5 8 Output示例 3遇见这道题的第一感觉就是这种题怎么会出现在这种网上,一个异或一个取余,三五行代码了事,后来写好后,发现连示例都过不去,原创 2016-04-18 13:46:28 · 1286 阅读 · 0 评论 -
51Nod-1027-大数乘法
给出2个大整数A,B,计算A*B的结果。 Input 第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0) Output 输出A * B Input示例 123456 234567 Output示例 28958703552水题,不多解释了,就是字符串的处理!代码C:#include <stdio.h>#include <string.h>#de原创 2016-04-17 17:15:46 · 679 阅读 · 0 评论 -
51Nod-1012-最小公倍数LCM
每次提到最小公倍数,我们不由得就要想起来最大公约数,数学不错的朋友都应该知道或者能理解一个定理:最小公倍数=两整数的乘积/最大公约数,所以我们就又转到了求最大公约数的问题上了。万变不离其中的感觉。输入2个正整数A,B,求A与B的最小公倍数。 Input 2个数A,B,中间用空格隔开。(1<= A,B <= 10^9) Output 输出A与B的最小公倍数。 Input示例 30 105原创 2016-04-15 23:26:15 · 1746 阅读 · 0 评论 -
51Nod-1011-最大公约数GCD
输入2个正整数A,B,求A与B的最大公约数。 Input 2个数A,B,中间用空格隔开。(1<= A,B <= 10^9) Output 输出A与B的最大公约数。 Input示例 30 105 Output示例 15对于这道题,要说的就是一个辗转相除法,也是欧几里得定理的应用,算法有些难于理解,需要数学很好才能理解,算法的实现上却是十分的简单,可以用递归来实现,当然,也可以用迭代来实原创 2016-04-15 21:23:30 · 907 阅读 · 0 评论 -
51Nod-1005-大数加法
今天遇见一道细节问题特别多的题,写得我眼疼,题本身不难,难得是他的细节问题繁多,需要考虑的情况也甚多,稍有不慎就侧漏了,哈哈。题的思路也很清晰,就是将最后的结果的正负的符号分离出来,剩下的就是高精度的加减法了,利用字符串处理即可,效率可以很高很高,有多高呢?自己感觉吧!题: 给出2个大整数A,B,计算A+B的结果。 Input 第1行:大数A 第2行:大数B (A,B的长度 <= 10原创 2016-04-15 03:39:44 · 2021 阅读 · 0 评论 -
2016年蓝桥杯A组 第十题 最大比例
比赛时,当我看到这道题,我彻底的懵比了,没有思路,没有思路,没有思路,重要的事说三遍,赛后,也没有在网上找别人的代码看,因为对省赛感觉很不好,以为自己挂了,所以没有心情去看题,应该说是不敢去看题,成与败,关系着我的尊严,当初学校不让我报名A组,很多人都嘲讽我不知天高地厚,一个破二本的院校,还想挑战A组;更有人反问我,你才学了几天,到你比赛时撑死了也就学满七个月,就这么瞧不起B组?实话说,我真的瞧不原创 2016-04-07 19:13:20 · 7561 阅读 · 34 评论 -
神奇的位运算——进制转换问题(16转8)
说道位运算符,应该都了解,但是很少有人会用,在网上看别人的代码,我至今只见过一道题用到了位运算符,并被它深深的搞晕了(当然,他搞晕我是要负责的,我现在已经深深的迷上了他,真的是太神奇了),位运算符的原理容易懂,也都知道他运算的效率很高,但是他究竟怎么去用,用在什么地方,我想不少人都说不清楚,所以当我看到位运算符可以这么玩的时候,我感到很神奇!首先,我们先来一个简单的程序来说明位运算符的神奇。问题原创 2016-03-05 17:42:12 · 4572 阅读 · 0 评论 -
关于蓝桥杯官网ADV-197 P1001试题分析与strlen函数疑问
最近忙于学习PHP,对C有所懈怠,今天心血来潮,打开了官网,发现又多了好几道题,于是挑了一道高精度的问题尝试着做做,做了好久,发现了些小问题(也许并不小),今天总结一下。题如下:当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当原创 2016-01-28 01:10:36 · 1457 阅读 · 3 评论 -
算法训练 数字三角形
经过这一阵努力的学习,我的C++基础总算学完了,可以开始自己刷题了,前天朋友给了我几道题,让我帮他看看,我也是很兴奋,跃跃欲试,可是我看到题时,我傻眼了,在我之前做过这道题,可是我没有做出来,怎么办?其实我没有想怎么办,只是当机立断的接了下来,因为我是个很逗比的人,自己遇见很难得题,就懒得去多想,可是当别人问我时,虚荣的我就会绞尽脑汁去思考,有了压力,我的大脑也更加活跃,总是可以解决我本以为自己解原创 2015-12-17 16:42:44 · 1360 阅读 · 1 评论 -
关于求近似值问题(14届蓝桥杯b组第三题)
今天,一如既往的训练c语言题,按照顺序,做到了14届蓝桥杯第三题,是一个关于近似值的问题,有点儿难度,尽管一上来我就有了思路,但是不得不承认,我想的办法不是最麻烦的,但是也够麻烦的了。题如下:如果x的x次幂结果为10,你能计算出x的近似值吗?显然,这个值是介于2和3之间的一个数字。请把x的值计算到小数后6位(四舍五入),并填写这个小数值。注意:只填写一个小数,不要写任何多余的符号或说明。第原创 2015-11-26 00:00:47 · 1266 阅读 · 0 评论 -
NYOJ-24-素数距离问题
描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。 如果输入的整数本身就是素数,则输出该素数本身,距离输出0输入 第一行给出测试数据组数N(0< N <=10000) 接下来的N行每行有一个整数M(0< M <1000000),输出 每行输出两个整数 A B. 其中A表示离相应测试数据最近的素数,原创 2016-05-24 13:58:46 · 928 阅读 · 0 评论 -
NYOJ-26-孪生素数问题
描述 写一个程序,找出给出素数范围内的所有孪生素数的组数。一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数。输入 第一行给出N(0< N <100)表示测试数据组数。 接下来组测试数据给出m,表示找出m之前的所有孪生素数。 (0< m <1000000)输出原创 2016-05-24 21:37:27 · 1403 阅读 · 0 评论 -
NYOJ-28-大数阶乘
描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?输入 输入一个整数m(0< m <=5000)输出 输出m的阶乘,并在输出结束之后输入一个换行符样例输入 50样例输出 30414093201713378043612608166064768844377641568960512000000000000经典的高精度问题。#include <stdio.h原创 2016-05-25 02:28:14 · 560 阅读 · 0 评论 -
NYOJ-35-表达式求值
描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。 比如输入:“1+2/4=”,程序就输出1.50(结果保留两位小数)输入 第一行输入一个整数n,共有n组测试数据(n<10)。 每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式,每个运算式都是以“=”结原创 2016-05-26 19:30:48 · 6110 阅读 · 3 评论 -
2016"百度之星"-资格赛-1001-A
不是太会用markdown,这个题目也有些数学公式不好搞,所以直接给题目链接吧。[题目](http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=690&pid=1001)这道题如果想要AC,需要用到逆元。这里,因为我们要求从x到y的每个字符的(ASCII 码值-28)的值的积(mod9973),所以需要把前缀积保存起来,最原创 2016-05-30 18:47:57 · 740 阅读 · 0 评论 -
x & (-x)
结论 整数运算x & (-x),当x为0时结果为0;x为奇数时,结果为1;x为偶数时,结果为x中2的最大次方的因子。解析&是按位与操作,即: 1 & 1 = 1, 1 & 0 = 0, 0 & 0 = 0。因为负数的补码 = 正数的补码取反 + 1,因此若没有+1的存在, x & (-x)的结果就是0。分析一下可知,该操作保留的是正数的最低有效bit。任意一个数(不管奇偶),都可以表示原创 2016-06-09 23:20:00 · 1412 阅读 · 0 评论 -
2016-计蒜之道-初赛-第二场-A-联想公司的logo设计
描述联想公司最近要设计一个体现公司文化的 logo。联想的设计师想出了一个方案:先画了一个顶点 O,接着画出以顶点 O 为公共顶点的、夹角为θ 的两条线段l1和l2,其中l1作为圆 C1的直径,l2作为圆 C2的直径。两个圆需要画在同一个圆形的塑料板上。请算出这个塑料板最小的面积是多少。输入格式输入只有一行,一共 3个浮点数 l1、l2和 θ。其中0≤l1,l2≤1000;−1000≤θ≤100原创 2016-06-05 14:16:50 · 1883 阅读 · 0 评论 -
2016计蒜之道-初赛-第五场-A-腾讯的一笔画游戏
描述腾讯开发了一款益智游戏:一笔画。在一个正 n 边形上,将 n 条边的中点连结,形成一个新的正 n 边形,之后再在新的正 n 边形内连结各个中点,如此重复 k 次,作为游戏的初始图案。玩家要从初始图案最外层 n 个顶点中的一个出发,进行无公共 端点 的一笔画。>>>详情请点击题解数学几何问题,涉及到的是求正多边形的内角以及已知两边一角求第三边的一般性问题。难度不大,细心就好。代码C++#inclu原创 2016-06-11 19:45:29 · 1207 阅读 · 0 评论 -
计算分数的精确值-高精度除法
描述计算分数的精确值。使用数组精确计算M / N(0 < M < N ≤ 100)的值。如果M / N是无限小数或小数部分超过20位,则精度要求小数点后20位,并输出。说明由于计算机内字长有限,常规的浮点数运算都有精度限制,为了得到高精度的计算结果,就必须自行设计算法,这里涉及到的算法是高精度算法中的除法。提示可以将商存放在一维数组中,进行除法运算,可模拟人的手工操作,即每次求出商的一位后,将余数乘原创 2016-06-28 11:33:46 · 4946 阅读 · 0 评论 -
2016计蒜之道-初赛-第四场-B-遗失的支付宝密码
描述某用户忘记了支付宝的登录密码,他只记得自己的密码满足以下几个条件: 密码中最多有 m 种不同的字符; 密码的最大长度为 n,但不能为空; 密码的任意一个前缀都 不是 一个 square。>>>详情请点击题解一道找规律的问题,逐位考虑情况。如第二组测试数据:4,5。 一共四位,先来考虑一位的,有5种情况;再来考虑两位的,因为需要避免square的出现,所以需要第二位和第一位不同,那么就有5原创 2016-06-11 17:11:15 · 2470 阅读 · 4 评论 -
NYOJ-739-笨蛋难题四
描述这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价,为了防止别人发现他的秘密。他决定对于这家公司的 股票最多买一次,现在笨蛋已经将股票价格列了出来。(这已经不是笨蛋的难题了,他已经解决 呵 呵)。只想难为难为你呀,从股票价格表上,你能算出笨蛋的每股股票最多能赚多少钱吗?输入 第一行一个n,表示n天(小于100000) 第二行 给出n天每股原创 2016-06-29 13:29:19 · 712 阅读 · 8 评论