![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
jia_bh
C++ labview 电子类专业
展开
-
蓝桥杯 数字游戏
问题描述如下: 问题不难,最大的问题是溢出,如果使用long long而直接暴力求借,溢出问题依旧存在。如何解决呢,不难得出第i个人心中的数是1+(1+2+3+……+(i-1)),所以到下一次栋栋心里的数为1+(1+2+3+4+5+……+n);其中n为已经有n人次报过数; 为了避免溢出,笔者的做法是保留上次栋栋报数的值,假设为num,统计栋栋本轮报数相对于上轮的增量,这个增量通过使用等差数列原创 2017-03-28 11:13:32 · 468 阅读 · 0 评论 -
C++求最小公倍数和最大公约数问题
这道题的解答就是求三个数(假设为想x,y,z)的最小公倍数,通过转化,这个最小公倍数可以转化成x*y*z÷最大公约数(x,y)÷最大公约数(x*y,z);所以问题的解答编程了如何求最大公约数的问题上了。 而求最大公约数的最直接方法是欧几里得法,简单说就是(a,b)两个数的最大公约数等于(b,a%b)%为取余运算符。举个例子(42,24)=(24,18)=(18,6)=(6,0),所以最大公约数就是原创 2017-03-12 16:45:00 · 6323 阅读 · 0 评论 -
蓝桥杯 阶乘 解决溢出问题
这道题可能很多一看就知道要解决溢出问题,然后就使用long long,但其实使用long long在算100的阶乘就已经严重溢出了,所以更合理的办法是像题目中提示的一样,使用一个数组,代码如下:#include<iostream>#include<cstring>using namespace std;const int MAX=3000;int a[MAX];//大数组在main外定义,否则原创 2017-03-29 09:20:25 · 2000 阅读 · 0 评论 -
最大的数
本人的结题思路是从遍历数组,从左到右依次选择区间大小为cnt+1中最大的数,同时删去前面m个数,下次选择区间length+1-m中最大的数,直至所选择的区间不大于0,如输入样例 23334325,3首先取前3+1个数(即2333)中最大的数,3,删去2,再取3+1-1个数(即334)的最大数,即4,删去33,此时选择区间为0,把剩下后面的数字保留,这种方法需要注意的是结束条件的判断,如输入样例...原创 2018-03-06 16:43:30 · 274 阅读 · 0 评论