精华内容
下载资源
问答
  • 奇数(英文:odd),正奇又称单数,整数,能被2整除的数是bai偶数,不能被2整除的数是奇数,奇数为1,3,5,7,9。偶数可用2k表示,奇数可用2k+1表示,这里k就是整数。 偶数是能够被.

    测试使用语言:【Python】

    由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文、做实验多数所用语言都是【Python】故而选择此语言。

    代码运行平台:【win10 x64】
    代码环境安装:【https://blog.csdn.net/feng8403000/article/details/113784766】
    代码编码格式:【https://blog.csdn.net/feng8403000/article/details/113785344】

    完整的vs搭建并使用【Python】,非常简单,基础部分无需任何环境配置,工具自带即可。

    前言:

    模运算在数论和程序设计中都有着广泛的应用,奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。虽然很多数论教材上对模运算都有一定的介绍,但多数都是以纯理论为主,对于模运算在程序设计中的应用涉及不多。那么今天我们就用几个案例来试试:

    1、判断奇偶数:

    奇数(英文:odd),正奇数又称单数, 整数中,能被2整除的数是bai偶数,不能被2整除的数是奇数,奇数的个位为1,3,5,7,9。偶数可用2k表示,奇数可用2k+1表示,这里k就是整数。

    偶数是能够被2所整除的整数。正偶数也称双数。若某数是2的倍数,它就是偶数,可表示为2n;若非,它就是奇数,可表示为2n+1(n为整数),即奇数除以二的余数是一。

    0是一个特殊的偶数。它既是正偶数与负偶数的分界线,又是正奇数与负奇数的分水岭。

    while True:
        x=int(input("请输入一个整数:\n"))
        if x%2==0:
            print(x,"是偶数")
        else:
            print(x,"是奇数")

    2、判断素数:

    质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。

    while True:
        x = int(input("请输入一个整数:\n"))
        isf = True
        for j in range(2,x):#排除1和本身,所以是从2开始到x,而不是1到x+1
            if x % j == 0:
                isf = False
        if isf:
            print(x,"是素数")
        else:
            print(x,"不是素数")

    3、求两个数的最大公约数:(辗转相除法)

    最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。

    while True:
        x = int(input("请输入第一个整数:\n"))
        y = int(input("请输入第二个整数:\n"))
        one=x
        two=y
        max=1
        #利用辗转相除法
        while True:
            max=one%two
            if max == 0:
                break
            else:
                one=two
                two=max
        print("{0}是{1}与{2}的最大公约数".format(two,x,y))

    4、求所有3位数的水仙花数(穷举法)

    水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

    注:必须使用【//除法取整】而不是【/除法】

    for x in range(100,1000):
        one=x//100
        two=x//10%10
        three=x%10
        if one**3 + two**3 + three**3 ==x:
            print(x,"是水仙花数")

     

    下篇内容为:【程序员数学基础【五、math库常用函数】(Python版本)】:【https://blog.csdn.net/feng8403000/article/details/114198523

    万丈高楼平地起,程序员数学基础,从小学的【什么是数学】至【离散数学】(主要是图论)咱们一步步成长,共同加油。

    展开全文
  • 【算法拾遗】最大数和最小数

    千次阅读 2014-06-06 00:07:29
    首先按照顺序将数组中的相邻的两个数分同一组,接着比较同一组中奇数位值和偶数位值,将较大放在偶数位上,较小放在奇数上,这样经过0.5N次比较后,最大数肯定在偶数位上,最小的数肯定数位上,...

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/28735533


        求一个数组中的最大值和最小值,我们一般的做法是扫描一遍数组求的最大值,扫描一遍数组求最小值,这样做需要比较2N次才能求解。而实际上我们可以比较1.5N次即可得到结果。考虑如下几种方法。


        方法一:

        我们可以把数组分成两部分,首先按照顺序将数组中的相邻的两个数分在同一组,接着比较同一组中奇数位上的值和偶数位上的值,将较大的放在偶数位上,较小的放在奇数位上,这样经过0.5N次比较后,最大数肯定在偶数位上,最小的数肯定在奇数位上,而后分别扫描一遍数组的偶数位和奇数位,便可得到最大值和最小值。这样,真个算法只需比较1.5N次。代码很简单,不再给出。


        方法二:

        方法一会破坏原数组的结构,要避免这个问题,我们给出方法二。首先仍按照顺序将相邻的两个元素划为一组,而后利用两个变量max和min保存当前的最大值和最小值,同一组的数比较之后,不再交换位置,而是将其中较小的数与min作比较,如果小于min则更新min,同理将其中较大的数与max作比较,如果大于max则更新max。这样依然共有0.5N组,每一组的两个元素比较,要比较0.5N次,max与该组较大者比较,共比较0.5N次,min与该组最小者比较,共比较0.5N次,一共也是1.5N次。代码同样很简单,不再给出。


        方法三:

        可以用分治的思想,只需分别求出数组前后N/2个数中的最大值和最小值,而后取两个大值中最大值最为max,去两个小值中的最小值为min,该方法同样要比较N/2次。实现代码如下:

    /*
    分治法求最大最小值
    */
    void SearchMaxAndMin(int *arr,int start,int end,int *min,int *max)
    {
    	if(arr == NULL)
    		return;
    	if(end-start <=1)
    	{
    		if(arr[start]>arr[end])
    		{
    			*max = arr[start];
    			*min = arr[end];
    		}
    		else
    		{
    			*max = arr[end];
    			*min = arr[start];
    		}
    		return;
    	}
    
    	int maxL,minL;
    	int maxR,minR;
    	SearchMaxAndMin(arr,start,(start+end)>>1,&minL,&maxL);    //求左边最大最小值
    	SearchMaxAndMin(arr,((start+end)>>1)+1,end,&minR,&maxR);  //求右边最大最小值
    
    	if(maxL>maxR)
    		*max = maxL;
    	else
    		*max = maxR;
    	if(minL<minR)
    		*min = minL;
    	else
    		*min = minR;
    }

        延伸

        求数组中的第二大的数,如果我们先扫描一遍数组,求的最大值,而后将其放到数组的最后,再求剩下元素的最大值,这样依然要比较2N-1次。

        我们可以通过设置两个变量max1和max2分别保存最大值和次大值,将数组的前两个值中大的赋给max1,小的赋给max2,遇到某个元素大于max1,则更新max1,如果某元素大于max2,小于max1,则更新max2,这样到最后遍历一遍便可以得出次大值,但这样因为每个元素要与两个值比较,因此比较次数依然为2N。

        同样可以利用解法二类似的方法,将比较次数降到1.5N次,将min改为max2,改变max2的更新条件即可。

        依然也可以用分治的策略,比较前后N/2个数中的最大值和次大值,二者均取最大的那个,这样比较次数依然为1.5N.

        而要求数组中的第k大的数,可以参考我的这篇博文:http://blog.csdn.net/ns_code/article/details/26966159

        

    展开全文
  • 题目一定要进行插空偶数的位置放小数,但是 n 为偶数的时候,会有一个小数最后位置浪费掉,先将最后一个最大数填上,这样剩下奇数个位置 贪心策略:因为要避免相同的数,所以 a 数组先在偶数位置处...

     

     现在有 n 个数,对 a[] 重新排序,使得好数最多

    好数的定义:在数组中比相邻的两个数都小,则称为好数,当然数组最左边和最右边的数不能称之为好数 

    可以保证在数组 a 中,可能会有几个数相等

     题目一定是要进行插空的,偶数的位置放小数,但是 n 为偶数的时候,会有一个小数在最后的位置浪费掉,先将最后一个数用最大数填上,这样剩下奇数个位置

    贪心策略:因为要避免相同的数,所以 a 数组先在偶数位置处从小到大放置数据,再在奇数位置处,从小到大放置数据 

    但 Wrong 了,因为最后两个位置都无法对答案做出贡献

    比如 a 数组为:1 1 2 4

    Wrong 代码: 

    const int N=1e5+5;
     
        int n,m,t;
        int i,j,k;
        int a[N],b[N];
     
    int main()
    {
        IOS;
        while(cin>>n){
            for(i=1;i<=n;i++) cin>>a[i];
            sort(a+1,a+1+n);
            int flag=0;
            if(n%2==0){
                b[n]=a[n];
                n--;
                flag=1;
            }
            int p=n;
            for(i=1;i<=n;i+=2){
                b[i]=a[p];
                p--;
            }
            int ans=0;
            for(i=2;i<=n;i+=2){
                b[i]=a[p--];
                if(b[i]<b[i-1] && b[i]<b[i+1]) ans++;
            }
            cout<<ans<<endl;
            for(i=1;i<=n;i++) cout<<b[i]<<" ";
            if(flag) cout<<b[n+1];
            cout<<endl;
        }
        //PAUSE;
        return 0;
    }

     为了避免上述情况的发生,不需要考虑奇偶,直接按照贪心策略放置即可

    AC 代码: 

    const int N=1e5+5;
     
        int n,m,t;
        int i,j,k;
        int a[N],b[N];
     
    int main()
    {
        IOS;
        while(cin>>n){
            for(i=1;i<=n;i++) cin>>a[i];
            sort(a+1,a+1+n);
            int p=1;
            for(i=2;i<=n;i+=2){
                b[i]=a[p];
                p++;
            }
            for(i=1;i<=n;i+=2){
                b[i]=a[p];
                p++;
            }
            int ans=0;
            for(i=2;i<n;i++){
                if(b[i]<b[i-1] && b[i]<b[i+1]) ans++;
            }
            cout<<ans<<endl;
            for(i=1;i<=n;i++) cout<<b[i]<<" ";
            cout<<endl;
        }
        //PAUSE;
        return 0;
    }

     

     

    展开全文
  • 或者求个整数m和n需要改变m二进制中多少才能得到n,可以先做 m^n 异或运算,然后求这个数中有多少个1。 面试题11:数值整数次方:如果采用常规解法,需要注意地方:当指数为负数时候;当底数为零且指数...
  • 得到单元格编号组中最大的数或最小的 标记出3个最大最小值 取前五名,后五名的方法 如何用公式求出最大值所在的行? 求多个最高分 如何求多条件的平均值 想求出第三大之数值 【查询和查找引用】 查找顺序公式 怎样...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    得到单元格编号组中最大的数或最小的 标记出3个最大最小值 取前五名,后五名的方法 如何用公式求出最大值所在的行? 求多个最高分 如何求多条件的平均值 想求出第三大之数值 【查询和查找引用】 查找顺序公式 怎样...
  • 3.1.4 两位数年份问题 121 3.2 返回当前日期、时间和指定日期、时间 121 3.2.1 NOW——返回当前日期和时间 121 3.2.2 TODAY——返回当前日期 123 3.2.3 DATE——返回指定日期序列号 124 3.2.4 TIME——...
  • 兔子问题、素数、水仙花、正整数分解质因数、成绩等级划分、最大公约数和最小公倍数、统计字符串字母、空格、数字和其它字符个数、s=a+aa+aaa+aaaa+aa...a、完数、球反弹、有1、2、3、4个数字,能组成多少个...
  • 2.5.2 某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有 26台计算机,每个子公司一个网段,则子网掩码应设为? 2.5.3 与10.110.12.29mask 255.255.255.224属于同一网段的主机IP地址? ...
  • (5)编写一个程序实现如下功能:从键盘输入字符(最多为80个),遇到回车键输入结束,将输入字符串按奇偶位置拆分,奇数位字符前,偶数位字符后,重新组成新字符串输出,例如输入: ab12cd3456fg,...
  • java经典编程题

    2013-10-21 19:18:27
    9.给一个不多于五位正整数,求它是几位数,并逆序输出它各位数字; 10.请输入星期几第一个字母来判断是星期几,如果一样,则判断第二个字母; 11.求一个3*3矩阵对角线元素之和; 12.有一个已经排好序数组,...
  • LeetCode ...我们 slogon : 只有熟练掌握基础数据结构与算法,才能对复杂问题迎刃有余。...这我将我所有公开算法资料整理一个电子书,全部题目...0004. 寻找个正序数组的中位数 0023. 合并 K ...
  • //最大的一个元素的数量 for (i=0;i;i++) { j0=(object)v11[i]; if (y11.Contains(j0)) { y12[y11.IndexOf(j0)]++; } else { y11.Add(j0); y12[y11.Count-1]=1; } } xmax=y12[0]; j0=(object)y11[0]; for (i=1;i;i+...
  • javascript入门笔记

    2018-05-15 15:01:07
    Javascript,简称为 JS,一款能够运行 JS解释器/引擎 中的脚本语言 JS解释器/引擎 JS运行环境: 1、独立安装JS解释器 - NodeJS 2、嵌入浏览器中的JS解释器 JS发展史: 1、1992年 Nombas 开发...
  • java 经典习题.doc

    2009-09-16 11:32:59
    题目:打印出所有"水仙花数",所谓"水仙花数"指一个三位数,其各位数字立方和等于该数本身。例如:153一个"水仙花数",因为153=1三次方+5三次方+3三次方。 1.程序分析:利用for循环控制100-999个数,...
  • 3.46 查找段文本相同词句 3.47 自动保存网页输出文本 3.48 文本编辑器 第4章 鼠标特效 4.1 禁用鼠标右键 4.2 使鼠标滚轮失效 4.3 状态栏显示鼠标位置 4.4 点击鼠标右键到指定页 4.5 鼠标放到图片上会显示...
  • 题目:打印出所有“水仙花数”,所谓“水仙花数”指一个三位数,其各位数字立方和等于该数  本身。例如:153一个“水仙花数”,因为153=1三次方+5三次方+3三次方。 【程序13】 题目:将一个正整数...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    6.数据结构评价算法的两个重要指标(时间复杂度和空间复杂度) 【北京理工大学 2001 七、1(2分)】 7. 数据结构研讨数据_(1)物理结构_和_(2)逻辑结构 _,以及它们之间相互关系,并对与这种结构定义...
  • 3.46 查找段文本相同词句 3.47 自动保存网页输出文本 3.48 文本编辑器 第4章 鼠标特效 4.1 禁用鼠标右键 4.2 使鼠标滚轮失效 4.3 状态栏显示鼠标位置 4.4 点击鼠标右键到指定页 4.5 鼠标放到图片上会显示...
  • 本书以开发人员项目开发经常遇到问题和必须掌握技术为中心,介绍了应用Java进行桌面程序开发各个方面知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • 本书以开发人员项目开发经常遇到问题和必须掌握技术为中心,介绍了应用Java进行桌面程序开发各个方面知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • 本书以开发人员项目开发经常遇到问题和必须掌握技术为中心,介绍了应用Java进行桌面程序开发各个方面知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • 本书以开发人员项目开发经常遇到问题和必须掌握技术为中心,介绍了应用Java进行桌面程序开发各个方面知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • 本书以开发人员项目开发经常遇到问题和必须掌握技术为中心,介绍了应用Java进行桌面程序开发各个方面知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • c语言经典案例

    2014-10-30 08:06:57
    实例117 输出数中的最大值 156 实例118 判断素数 157 实例119 递归解决年龄问题 158 实例120 递归解决分鱼问题 159 实例121 小数分离 160 实例122 求任意数n次幂 161 实例123 固定格式输出当前时间 163 实例...
  • 本例第七行以四种格式输出整型变量a值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行以四种格式输出实型量b值。其中“%f”和“%lf ”格式输出相同,说明“l”符对“f”类型无...
  • 本书第II卷,以开发人员项目开发经常遇到问题和必须掌握技术为中心,介绍了应用Java进行桌面程序开发各个方面知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
  • 本书第II卷,以开发人员项目开发经常遇到问题和必须掌握技术为中心,介绍了应用Java进行桌面程序开发各个方面知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

在两位数中最大的偶数是几