精华内容
下载资源
问答
  • <p>#include"stdio.h" int main() {<!-- -->  int x, y, z;  for (x = 1, y = 0; x <=...刚刚你输入了%d个3的倍数!",y); }</p>
  • 对于求两个数的最小公倍数与最大公约数,最大公约数等于两数相乘再除以最大公约数,所以问题的核心就是怎么求最大公约数。我所知道的有四种方法:穷举法(不推荐使用),辗转相除法(使用最多),更相减损术,Stein...

    求两个数的最大公约数与最小公倍数

    对于求两个数的最小公倍数与最大公约数,最大公约数等于两数相乘再除以最大公约数,所以问题的核心就是怎么求最大公约数。我所知道的有四种方法:穷举法(不推荐使用),辗转相除法(使用最多),更相减损术,Stein算法(密码领域用的多)

    穷举法(暴力搜索)

    穷举法就不多解释了直接给代码

    int GCD1(int a,int b)//暴力搜索
    {
        int gcd=(a>b?b:a);
        for(int i=gcd; i>0; i--)
        {
            if(a%i==0&&b%i==0)
            {
                gcd=i;
                break;
            }
        }
        return gcd;
    }
    

    辗转相除法(欧几里得算法)

    辗转相除法分如下两部步:

    1. 较大数a对教小数b进行取余运算得到余数c;
    2. 若余数为零,则较小数为最大公约数;否则令a=b,b=c重新执行第一步

    递归代码如下(要求a,b按大小输入):

    int GCD2(int a,int b)//辗转相除
    {
        return b==0?a:GCD2(b,a%b);
    }
    

    非递归代码如下:

    int GCD2(int a,int b)//辗转相除
    {
        int big,small;
        if(a>b)
        {
            big=a;
            small=b;
        }
        else
        {
            big=b;
            small=a;
        }
        for(int i=big%small; i>0; i=big%small)
        {
                big=small;
                small=i;
        }
        return small;
    }
    

    更相减损术

    更相减损术用的是减法而不是除法,具体步骤如下:

    1. 两数若都为偶数则两数一直都除以2到不都为偶数,并记录除以了几个2;
    2. 较大数a减较小数b得到差值c;
    3. 若c与b相等,则c为最大公约数,否则令a=max(b,c),b=min(b,c)再执行第二步;

    代码如下:

    int GCD3(int a,int b)//更相减损术
    {
        int mul=1;
        int big,small;
        if(a>b)
        {
            big=a;
            small=b;
        }
        else
        {
            big=b;
            small=a;
        }
        while(1)
        {
            if(big%2==0&&small%2==0)
            {
                mul*=2;
                big/=2;
                small/=2;
            }
            else break;
        }
        for(int i=big; i!=small; i=big-small)
        {
            if(i>small)
            {
                big=i;
            }
            else
            {
                big=small;
                small=i;
            }
        }
        return small*mul;
    }
    

    Stein算法

    欧几里得算法与更相减损术的缺陷
           欧几里德算法是计算两个数最大公约数的传统算法,无论从理论还是从实际效率上都是很好的。但是却有一个致命的缺陷,这个缺陷在素数比较小的时候一般是感觉不到的,只有在大素数时才会显现出来。
           更相减损术在两数相差较大时,会进行多次无意义运算,两数相差越大,无意义运算越多,效率过低。
           一般实际应用中的整数很少会超过64位(当然已经允许128位了),对于这样的整数,计算两个数之间的模是很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过64位的整数的模,用户也许不得不采用类似于多位数除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。于是便有了Stein算法。
    算法的思想
    由J. Stein 1961年提出的Stein算法很好的解决了欧几里德算法中的这个缺陷,Stein算法只有整数的移位和加减法,为了说明Stein算法的正确性,首先必须注意到以下结论:

    1. gcd(a,a)=a,也就是一个数和其自身的公约数仍是其自身。
    2. gcd(ka,kb)=k gcd(a,b),也就是最大公约数运算和倍乘运算可以交换。特殊地,当k=2时,说明两个偶数的最大公约数必然能被2整除。
    3. 当k与b互为质数,gcd(ka,b)=gcd(a,b),也就是约掉两个数中只有其中一个含有的因子不影响最大公约数。特殊地,当k=2时,说明计算一个偶数和一个奇数的最大公约数时,可以先将偶数除以2。

    算法的步骤

    1. 两数若都为偶数则两数一直都除以2到不都为偶数,并记录除以了几个2;
    2. 若两数中还有非偶数,将其除以2至奇数
    3. c=|数a-数b|,d=min(数a,数b),
    4. 若c为0则d为最大公约数,否则令a=c,b=d重复第二步

    代码如下:

    int GCD4(int a,int b)//Stein
    {
        int mul=1;
        while(1)
        {
            if(a%2==0&&b%2==0)
            {
                a>>=1;
                b>>=1;
                mul<<=1;
            }
            else if(a%2==0)
            {
                a>>=1;
            }
            else if(b%2==0)
            {
                b>>=1;
            }
            else break;
        }
        while(a>0)
        {
            while(a%2==0)
            {
                a>>=1;
            }
            int abs=fabs(a-b);
            int small=a>b?b:a;
            a=abs;
            b=small;
        }
        return b*mul;
    }
    

    c++代码

    具体实现代码及效果图:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int GCD1(int a,int b);//暴力搜索
    int GCD2(int a,int b);//辗转相除
    int GCD3(int a,int b);//更相减损术
    int GCD4(int a,int b);//Stein算法
    int main()
    {
        int a=0,b=0;
        int gcd[4]= {1,1,1,1}; //最大公约数:greatest common divisor(gcd)
        int lcm[4]= {1,1,1,1}; //最小公倍数:least common multiple(lcm)
        while(cin>>a>>b)
        {
            gcd[0]=GCD1(a,b);
            gcd[1]=GCD2(a,b);
            gcd[2]=GCD3(a,b);
            gcd[3]=GCD4(a,b);
            for(int i=0; i<4; i++)
            {
                lcm[i]=a*(b/gcd[i]);//先算除法防止越界
                cout<<gcd[i]<<" "<<lcm[i]<<endl;
            }
        }
        return 0;
    }
    

    效果图
    萌新一个,若代码有错误或算法思想有问题还望多多斧正;

    展开全文
  • 差异表达基因-火山图和聚类图解释

    万次阅读 2019-02-15 10:40:38
    今天就先来聊聊如何看差异表达基因数据,火山图,聚类图又怎么看。1差异基因筛选方法那差异基因是如何筛选出来的呢?差异基因的筛选方法有很多,包括倍数法、T检验、F检验及SAM等。 下面简单介绍一下GCBI...

    想研究某现象的分子机制,老板豪气的来一句,先测个转录组吧,看下差异表达基因。

    是否在心里窃喜,制个样就完事了,太easy有木有。等大堆数据回来的时候,是不是傻眼了?

    从何下手挑选差异表达基因呢?
    今天就先来聊聊如何看差异表达基因数据,火山图,聚类图又怎么看1差异基因筛选方法那差异基因是如何筛选出来的呢?差异基因的筛选方法有很多,包括倍数法、T检验、F检验及SAM等
    下面简单介绍一下GCBI平台上用的倍数法和SAM法。
    倍数法适用于没有生物学重复的样本,其计算基因在两个条件下表达水平的比值,确定比值的阈值,将绝对值大于此阈值的基因判断为差异基因。
    SAM算法适用于有生物学重复的样本,通过对分母增加一个常量 T 检验过程减小了假阳性发生的概率。文献中报道,相较于其他算法,SAM算法更为稳定,筛选出的结果也更为准确。2差异基因数据解读经过合适的差异基因方法筛选出的差异基因,结果一般分为两部分,数据+图形。
    数据结果展示如下图所示(两分组)众多参数中,重点看三个。

    p-value或q-value

    没有做生物学重复请跳过这一步。
    p-value或q-value是统计学检验变量,代表差异显著性,一般p-value或q-value小于0.05代表具有显著性差异,但可根据具体情况适当调整
    因为p-value或q-value衡量地是某个基因假阳性的概率,如果p-value或q-value越低,那么挑选该基因出现假阳性的概率就越低,可验证性就越高。

    两者具体的计算方法具体如下:那p-value、q-value同时存在时看哪个呢?

    SAM法只有q-value当两者同时存在时,可根据具体情况具体分析。
    差异筛选是一个典型的多重假设检验过程,对于多重假设检验,单次检验中差异显著基因的假阳性率(p-value较小)可能会较大,而q-value和FDR值较常见的BH校正方法得到的FDR值而言,改进了其对假阳性估计的保守性。
    即q-value相比于p-value更加严格,当差异基因结果较少时,可以退而求其次看p-value。Fold ChangeFold Change表示实验组比上对照组的差异表达倍数,一般表达相差2倍以上是有意义的,放宽要求1.5倍或者1.2倍也可以接受。
    看表达倍数的同时还需结合基因表达丰度,信号值太低的基因会在后续的验证实验中检测不到。3差异基因图表解读在差异结果的图形展示结果中,主要是火山图聚类图。火山图火山图只针对两分组且有生物学重复的情况。
    如何看火山图呢?

    火山图可反映总体基因的表达情况,横坐标代表log2(Fold Change),纵坐标表示-log10(P值),每个点代表一个基因,颜色用以区分基因是否差异表达,图中橙色的点代表差异表达基因,蓝色的点代表没有差异表达的基因。聚类图

    聚类图可以衡量样本或基因之间表达的相似性
    如上图所示的聚类图中,横坐标代表样本聚类,一列代表一个样本,聚类基于样本间基因表达的相似性,样本间基因表达越接近,靠的越近,以此类推。
    纵坐标代表基因聚类,一行代表一个基因,聚类基于基因在样本中表达的相似性,基因在样本中表达越接近,靠的越近,以此类推。
    色阶代表基因表达丰度,越红代表上调得越明显,越绿代表下调得越明显。
    如何做聚类图请戳往期推送

    做个聚类图只需1分钟
    差异基因有了,如何挑选潜在基因进行实验验证呢?
    关键还在于感兴趣点在哪了。粗略的看,可以先看KEGG或者GO功能分类,看差异基因具体富集在哪些通路或功能。
    比如关注的是细胞内脂肪酸合成关键酶,可以重点看脂肪酸合成和碳流相关通路。具体如何看KEGG或者GO功能分类,请听下回分解。


    参考

    https://www.cnblogs.com/leezx/p/6601967.html


    DrugAI
    展开全文
  • 01 科普小知识首先,给各位解释一下什么是矢量化。以下是百度百科给的参考。矢量化简单来说,文字矢量化就是将文字转变成可以编辑的形状,而且这个图形无论怎么放大都不会失真。图1 字体为演示镇魂行楷图2 字体为...

    e9cba96404ea9522ff52f4383d3aadc1.png

    Hello,好久不见!

    今天要分享的是关于PPT的一个小技能——文字矢量化

    01 科普小知识

    首先,给各位解释一下什么是矢量化。以下是百度百科给的参考。

    906684d50197eaec53a6fc1f45972d1a.png
    矢量化

    简单来说,文字矢量化就是将文字转变成可以编辑的形状,而且这个图形无论怎么放大都不会失真。

    5c86317917bef2b9909a1347acb85ac0.png
    图1 字体为演示镇魂行楷

    f0fd84d7a6741b186bcd1e63948ecaeb.png
    图2 字体为演示镇魂行楷

    上面的两张图片,就是文字分别转成普通图片(JPG 或 PNG 格式)和矢量形状。

    两者放大同样倍数之后,能够看到矢量化的文字即便放大很多倍,细节仍然清晰可见,但图片的话就变得很模糊。

    02 应用

    有时将文字矢量化对PPT演示有很大的作用。

    1. 实现字体创作

    现在都注重版权,很多字体也是这样,尤其是商用的字体。

    如果随随便便就拿来用,说不定哪天就收到律师函警告了。

    但是我们将文字矢量化,编辑文字的顶点,进行一定的变形,就不会有版权问题了。

    15610ebb66dd07658a013950ac916009.png
    字体为汉仪旗黑

    具体操作:先将文字矢量化变成形状——选中,鼠标右键——编辑顶点。

    9b6292c7d160eacd73b7498a212ee54c.gif
    编辑顶点

    2. 解决字体缺失问题

    有时,我们在自己的电脑上用了一些特殊的字体,没有办法嵌入到 PPT 里面,然后,放映的时候还不是用的自己的设备。

    这个时候,有两种解决方案:

    ① 备份字体,安装到要放映的设备上。

    ② 将使用该字体的文字矢量化,或者转为图片(如果添加了放大动画,涉及像素的话,最好转为矢量图像)。

    03 操作方法

    1. 布尔运算

    运用 PPT 自带的布尔运算,就可以将文字转化为图形,实现矢量化。

    详细操作:插入文本框——输入一段文字——插入一个形状(矩形、圆形都可,是形状就行)——先选中文字,再按住 Ctrl 加选形状(顺序一定不要反了)——形状格式——合并形状——减除

    下面动图中,我为了操作方便快捷,将布尔运算放到了【自定义快速访问工具栏】

    91c30dfa10e13dffa746c890c5be4c06.gif
    布尔运算

    2. 使用插件如果要追求速度的话,还可以使用插件来实现文字矢量化。

    比如,下面这两款强大的插件:iSlide、OK插件。

    (1) iSlide下载iSlide的官网:https://www.islide.cc/

    305db9e7778655583451b0c911a2dfaf.gif
    iSlide 实现文字矢量化

    (2) OK插件获取OK插件的官网:http://oktools.xyz/

    操作:选中文字——一键特效——边缘裁除。

    2c373aa5091dcdea132e65dbaaaa76b2.gif
    OK插件 实现文字矢量化

    以上是 PPT 中实现文字矢量化及相关应用。

    展开全文
  • 两个数的最大公约数怎么求?思考题目的同时,我在这也顺便发出三个灵魂疑问?什么又是更相减损法?什么又是辗转相除法?什么又是欧几里得算法?不懂没关系,往下看要解决两数的最大公约数问题?,你首先要知道什么是两...

    两个数的最大公约数怎么求?

    思考题目的同时,我在这也顺便发出三个灵魂疑问?

    • 什么又是更相减损法?
    • 什么又是辗转相除法?
    • 什么又是欧几里得算法?

    不懂没关系,往下看

    1. 要解决两数的最大公约数问题?,你首先要知道什么是两数的公约数
    2. 解释:
    • 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。
    • 如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数
    • ==例子:== 12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。

    那如何求呢?

    其实这个问题的解法就在我开头提的三个疑问中。解决两数的最大公约数问题,可以有很多种方法,而上面提到的二种是最常见的(因为有一种是重复的)

    画重点了:
    欧几里得算法分析:

    1.欧几里德算法又称辗转相除法,简称gcd
    2, 该算法原理:以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数
    3.该算法证明:请同志们移至度娘

    gcd流程图:

    96e2bbad9cf34598eb6d8aa3b1fdb64b.png

    如果gcd算法不好理解,那解决这道问题,可以直接用“枚举法”(也称为暴力算法

    枚举算法分析:

    • 求a、b两个数的最大公因数。如果这两个数的最大公因数恰好是a、b其中一个,那肯定是a、b中较小者。==例如:== 2、4的最大公因数是2
    • 那我们可以先求出a、b最小者,然后让a、b两数分别和最小者求余,直到a、b两数同时求余结果为0时就结束循环,否则最小值自减一,然后继续循环

    上代码

    Java大哥

    1

    Python新竞大哥

    1

    最后有兴趣一起交流的,可以关注我的公众号:这里你能够学到很实用的技巧,不是常用的我不说,年底还会抽奖送出我学过计算机相关专业的书籍福利。敬请期待!!!!

    http://weixin.qq.com/r/SUiMlL-EuOLHrfv39x1b (二维码自动识别)

    展开全文
  • 需要解释一下,首先,要变为最小天数,意味着橘子要尽可能多的除以2或者除以3,那么自然而然就想到怎么让橘子变为2的倍数或者3的倍数,变为2的倍数需要的步数为n%2,然后变为n/2又需要一步,变为3的倍数同理,然后...
  • 前端ant-design vue,后端jeecg-boot框架,直接使用vue截图还是很简单的,网上很多教程。简单分享一下。 首先根据要截图的元素(一般选一个html的...下面图片中的方法很简单,应该也不需要过多解释怎么使用。 问题在
  • 题目传送门 ... 好吧,数论一点都不懂,只明白f (n + 1)意思是前n+1个数的最小公倍数,求法解释参考HDOJ 1019,2028 这个结论暂时不知道怎么推出来的,那么就是剩下1/(n+1) 逆元的求法了 代码: ...
  • 两个数的最大公约数怎么求? 思考题目的同时,我在这也顺便发出三个灵魂疑问? 什么又是更相减损法? 什么又是辗转相除法? 什么又是欧几里得算法? 不懂没关系,往下看 要解决两数的最大公约数问题?,你首先要知道...
  • 阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。...核心在于:怎么得到10? 答:2的倍数*5 其次,2和5谁出现的频率高? 答:显然是5,...
  • 两个数的最大公约数怎么求?思考题目的同时,我在这也顺便发出三个灵魂疑问?什么又是更相减损法?什么又是辗转相除法?什么又是欧几里得算法?不懂没关系,往下看要解决两数的最大公约数问题?,你首先要知道什么是两...
  • 2018 5 20

    2018-05-20 21:43:43
    巧妙的转换,转换为一个二维数组求其相等两行的最大距离 hash poj3274 Gold Balanced Lineup ...我的想法是求如果不同位置的1出现的次数相等,则这个区间的数(十进制)相加就是2^n-1的倍数 问题是怎么求这个...
  • 2018 5 20 刷题记录

    2018-05-20 21:44:00
    poj3274 Gold Balanced Lineup 巧妙的转换,转换为一个二维数组求其相等两行的最大距离 hash ... 解释的很清楚 我的想法是求如果不同位置的1出现的次数相等,则这个区间的数(十进制)相加就是...问题是怎么求这个区...
  • struct内存对齐

    2017-07-10 22:06:08
    关于C++中的struct内存对齐,应该也是初学者比较疑惑的一个知识点,但是搞清楚之后会发现非常简单,这里解释一下struct内存到底怎么对齐。  主要记住以下两点: 1.各成员变量存放的起始地址相对于结构的起始地址...
  • 就是一个英雄瞎搞之类为世界作出贡献,蓝后某zz公司免费给他糖,然后由于某些原因他只能拿能整除k数量糖果,然后每个盒子里有一定数量的糖果,拿了盒子就必须拿完里面所有的糖果,求他怎么拿的最多。 输入 5 7 ...
  • 报这种错误的原因主要是2328750 不等于三个数相乘的倍数(包括1倍),我碰到错之后,看了一下网上的解决方案好像都没有怎么说清楚这个问题,只简单解释了一下。 如导入数据后,原本的代码是: y_train = np.array...
  • 51nod 1068【简单博弈】

    2016-10-23 19:36:53
    思路 手动打表, N 1 : A出1 A胜; ...6 : B胜(解释略);...最后会发现A不管怎么取也不会达到3的倍数,所以A赢两次后的第三次中,不可能取完以后,留给B是对方能赢(即A能赢)的阵式;
  • C语言中结构体对齐

    2018-06-25 15:58:45
    c语言中结构体会发生对齐,这点大多数人都清楚,其目的是为了让cpu存取数据更快,但是为了提高存取的速度制定的规则是怎么样的?一直没找到靠谱的解释,网上给的多种说法,总感觉有些牵强,有特别懂的同志烦请留言...
  • hdu1089 Ignatius's puzzle

    2017-10-16 13:38:00
    其实这道题不是很难,但是我刚开始拿到这道题的时候不知道怎么做, 因为这个式子我就不知道是干什么的: 65|f(x) 百度解释(若a/b=x...0 称a能被b整除,b能整除a,即b|a,读作“b整除a”或“a能被b整除”。a叫做b的...
  • Java实现欧几里得算法

    2020-09-16 21:26:05
    中学的时候虽然没怎么听说过欧几里得算法,但是肯定听说过辗转相除法:算法书中有了一个相对明确的解释: 两个整数x和y且x>y的最大公因子等同于y与x mod y(x除以y的余数)的最大公因子。数t整除x和y当且仅当t...
  • KMP

    2020-07-28 01:26:23
      至于KMP是怎么实现的, 以及代码的解释,这里借一下大佬的博客,大家可以去学习一下。KMP算法最浅显理解——一看就明白 这里引用例题 poj 1961 题意: 输出每个字符串从1 到 i 的前缀可以由一个字串循环多少次...
  • 1 理解计算机是怎么运行程序的 2 运行一个已解释的程序 3 运行一个已编译的程序 4 C++在哪里 5 理解Visual c++中的程序文件 6 创建源代码文件 7 理解并创建头文件 第二章 结构和语法 8 理解计算机语言 9 理解计算机...
  • 1 理解计算机是怎么运行程序的 2 运行一个已解释的程序 3 运行一个已编译的程序 4 C++在哪里 5 理解Visual c++中的程序文件 6 创建源代码文件 7 理解并创建头文件 第二章 结构和语法 8 理解计算机语言 9 理解计算机...
  • 1 理解计算机是怎么运行程序的 2 运行一个已解释的程序 3 运行一个已编译的程序 4 C++在哪里 5 理解Visual c++中的程序文件 6 创建源代码文件 7 理解并创建头文件 第二章 结构和语法 8 理解计算机语言 9 理解计算机...
  • 1 理解计算机是怎么运行程序的 2 运行一个已解释的程序 3 运行一个已编译的程序 4 C++在哪里 5 理解Visual c++中的程序文件 6 创建源代码文件 7 理解并创建头文件 第二章 结构和语法 8 理解计算机语言 9 理解计算机...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

倍数怎么解释