精华内容
下载资源
问答
  • 这个我写POJ上问题1109我写代码,写很多,主题思想却很简单,主要段考虑:一位数,二位数,三数,四位数,五位数,可以看到每个前四五个数组成个三角型,而后9000个最小单位数组成上底为11,下...

    /*思路:该题主要是通过阶段讨论来分阶段解决问题,每个阶段中再根据具体的情况讨论。
    算法的时间和空间复杂度都可望达到O(1)*/
    #include<stdio.h>
    #include<math.h>
    #define N1 45
    #define N2 9000
    #define N3 1386450
    #define N4  20891*9000
    #define N 189414495
    int main()
    {
     unsigned int n;  //测试用例个数
     unsigned int num;//每个测试用例输入的值
        unsigned int x;
     unsigned int flag;
     unsigned int temp;
     unsigned int t;
     scanf("%d",&n);
     while(n--)
     {
      scanf("%d",&num);
      if(num<=45&&num>0)                 // 测试用例为1~1,2~1,3~2,10~4,11~1,45~9
      {
       x = (int)(sqrt(0.25+2*num)-0.5);
       if((x*x+x) == 2*num)
       {
        printf("%d/n",x);
        continue;
       }
       else
       {
        num = num - (x*x+x)/2;
        printf("%d/n",num);
        continue;
       }
      }
      else if(num>45&&num<=9045)        //测试用例为 46~1,47~2,56~0,57~1,80~0,9044~9,9045~9
      {
       num = num - 45;
       x  = (int)(sqrt(0.01*num+25*0.01)*10-5);
       if((x+10)*x == num)
       {
        printf("%d/n",(9+x)%10);
        continue;
       }
       else
       {
                    num = num - (10+x)*x;
        if(num>=1&&num<=9)
        {
         printf("%d/n",num);
         continue;
        }
        else
        {
         flag = num%2;
         if(flag==1)
         {
          printf("%d/n",(9+(num-9)/2)%10);
         }
         else
         {
          printf("%d/n",(9+(num+1-9)/2)/10);
         }

        }
       }
      }
      else if(num>9045&&num<=N1+N2+N3)       //test case: 9046~1,9235~1,9236~0,9236~0
      {                                      //1395493~9,1395494~9,1395495~9
       num = num-9045;
       x = (int)(sqrt(381.0/36.0*381+24.0/36.0*num)-381.0/6.0);
       if((3*x+381)*x == 2*num)
       {
        printf("%d/n",(99+x)%10);
        continue;
       }
       else
       {
        num = num - ((3*x+381)*x)/2;
        if(num>=1&&num<=9)
        {
         printf("%d/n",num);
         continue;
        }
        else if(num>9&&num<=189)
        {
         flag = num%2;
         if(flag==1)
         {
          printf("%d/n",((num-9)/2+9)%10);
             continue;
         }
         else
         {
          printf("%d/n",((num+1-9)/2+9)/10);
          continue;
         }
        }
        else
        {
         flag = num%3;
         if(flag==0)
         {
          printf("%d/n",((num-189)/3+99)%10);
          continue;
         }
         else if(flag==2)
         {
          temp = ((num+1-189)/3+99)/10;
          temp = temp%10;
          printf("%d/n",temp);
          continue;
         }
         else
         {
          temp = ((num+2-189)/3+99)/10;
          temp = temp/10;
          printf("%d/n",temp);
          continue;
         }

        }
       }
      }
      else if(num>N1+N2+N3&&num<=N1+N2+N3+N4) //test cases:(1395495+1)~1,(1395495+2893-3)~1,(1395495+2893-2)~0
      {                                       //(1395495+2893-1)~0,(1395495+2893)~0,(1398389)~1,(189414495)~9,(189414495-1)~9
       num = num-N1-N2-N3;                 //(189414495-2)~9,(189414495-3)~9
       x =(int)(sqrt(2891.0/16.0*2891+8.0/16.0*num)-2891.0/4.0);
       if((2*x+2891)*x == num)
       {
        temp = (999+x)%10;
        printf("%d/n",temp);
        continue;
       }
       else
       {
        num =  num-(2891+2*x)*x;
        if(num>=1&&num<=9)
        {
         printf("%d/n",num);
         continue;
        }
        else if(num>9&&num<=189)
        {
         flag = num%2;
         if(flag==1)
         {
          temp = ((num-9)/2+9)%10;
          printf("%d/n",temp);
          continue;
         }
         else
         {
          temp = ((num+1-9)/2+9)/10;
          printf("%d/n",temp);
          continue;
         }
        }
        else if(num>189&&num<=2889)
        {
         flag = (num-189)%3;
         if(flag==0)
         {
                            temp = ((num-189)/3+99)%10;
          printf("%d/n",temp);
          continue;
         }
         else if(flag == 1)
         {
          temp = ((num+2-189)/3+99)/10;
          temp = temp/10;
          printf("%d/n",temp);
          continue;

         }
         else
         {
          temp = ((num+1-189)/3+99)/10;
          temp = temp%10;
          printf("%d/n",temp);
          continue;
         }
        }
        else if(num>2889&&num<=38889)
        {
         flag = (num-2889)%4;
         if(flag==0)
         {
          temp = ((num-2889)/4+999)%10;
          printf("%d/n",temp);
          continue;
         }
         else if(flag==3)
         {
                             temp = ((num+1-2889)/4+999)/10;
           temp%=10;
           printf("%d/n",temp);
           continue;
         }
         else if(flag==2)
         {
          temp = ((num+2-2889)/4+999)/10;
          temp/=10;
          temp%=10;
          printf("%d/n",temp);
          continue;
         }
         else if(flag==1)
         {
          temp = ((num+3-2889)/4+999)/10;
          temp /= 10;
          temp /= 10;
          printf("%d/n",temp);
          continue;
         }

        }

        
       }

      }
      else  if(num>N1+N2+N3+N4&&num<=2147483647)              //test cases:189453389~0,189453388~0,189453387~0,189453386~0,189453385~1,189453390~1
      {
                   num = num-N1-N2-N3-N4;                          //2147483647~2
          //printf("%d/n",num);
          x = (int)(sqrt(40.0/100*num+77783.0/100*77783.0)-77783.0/10.0);
         // printf("x = %d/n",x);
                   if((int)(2.5*x*x+38891.5*x)==num)
          {
           printf("%d/n",(9999+x)%10);
           continue;
          }
          else
          {
           //t = (int)(2.5*x*x+38891.5*x);
           //printf("t = %d/n",t);
           num = num-(int)(2.5*x*x+38891.5*x);
           //printf("num = %d/n",num);
           if(num>=1&&num<=9)
           { 
                          printf("%d/n",num);
           continue;
           }
           else if(num>9&&num<=189)
           {
            flag = (num-9)%2;
           // temp = (num-9)/2+9;
            if(flag==0)
            {
                             temp = ((num-9)/2+9)%10;
           printf("%d/n",temp);
           continue;
            }
            else if(flag==1)
            {
                               temp = ((num+1-9)/2+9)/10;
             printf("%d/n",temp);
             continue;
            }
           }
           else if(num>189&&num<=2889)
           {
                           flag = (num-189)%3;
            if(flag==0)
            {
             temp = ((num-189)/3+99)%10;
             printf("%d/n",temp);
             continue;
            }
            else if(flag==2)
            {
             temp = ((num+1-189)/3+99)/10;
             temp = temp%10;
             printf("%d/n",temp);
             continue;
            }
            else
            {
             temp  = ((num+2-189)/3+99)/10;
             temp = temp/10;
             printf("%d/n",temp);
             continue;
            }

           }
           else if(num>2889&&num<=38889)
           {
            flag = (num-2889)%4;
            if(flag==0)
            {
             temp = ((num-2889)/4+999)%10;
             printf("%d/n",temp);
             continue;
            }
            else if(flag==3)
            {
             temp = ((num+1-2889)/4+999)/10;
             temp = temp%10;
             printf("%d/n",temp);
             continue;
            }
            else if(flag==2)
            {
             temp = ((num+2-2889)/4+999)/10;
             temp = temp/10;
             temp = temp%10;
             printf("%d/n",temp);
             continue;
            }
            else if(flag==1)
            {
             temp = ((num+3-2889)/4+999)/10;
             temp = temp/10;
             temp = temp/10;
             printf("%d/n",temp);
             continue;
            }

           }
           else if(num>38889)
           {
            flag = (num-38889)%5;
            if(flag==0)
            {
                               temp = ((num-38889)/5+9999)%10;
             printf("%d/n",temp);
             continue;
            }
            else if(flag==4)
            {
             temp = ((num+1-38889)/5+9999)/10;
             temp = temp % 10;
             printf("%d/n",temp);
             continue;
            }
            else if(flag==3)
            {
             temp = ((num+2-38889)/5+9999)/10;
             temp = temp/10;
             temp = temp%10;
             printf("%d/n",temp);
             continue;
            }
            else if(flag==2)
            {
             temp = ((num+3-38889)/5+9999)/10;
             temp = temp/10;
             temp = temp/10;
             temp = temp%10;
             printf("%d/n",temp);
             continue;
            }
            else
            {
             temp = ((num+4-38889)/5+9999)/10;
             temp = temp/10;
             temp = temp/10;
             temp = temp/10;
           
             printf("%d/n",temp);
             continue;
            }
           }
                }
        }
     }
     return 0;
    }

    展开全文
  • 1.拉普拉斯算子(Laplace Operator)n维欧里德空间中的一个二阶微分算子,定义为梯度(▽f)的散度(▽•f)。 2.OpenCV的Laplacian函数原型为:Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, ...
  • c#位移运算以及Unity3dLayerMask原理

    千次阅读 2014-03-12 11:19:25
    再说LayerMask原理,原理就是要选择哪个(个或者多个)层,就把该层设置为1,不需要选择层设置为0,然后从ID最大层到ID最小层排列,组成个二进制数, 最后把二进制转换成进制,即最终结果

    首先说说c#位移运算,例如:a>>b    表示a向右移动b位,则等于a除以2的b次方,而且位移运算没有小数,只取整数。而a<<b表示a向左移动b位,结果等于a乘以2的b次方

    始终左边的数都是基数,右边的数是移动的位数。

    再说LayerMask的原理,原理就是要选择哪几个(一个或者多个)层,就把该层设置为1,不需要选择的层设置为0,然后从ID最大层到ID最小层排列,组成一个二进制数,

    最后把二进制转换成十进制,即最终的结果。

    例如:

    var mask  :LayerMask;

    mask=10;

    表示(10的二进制为1010)选择第4层和第二层。



    展开全文
  •  题目:给个不多于5位正整数,要求:、求它是几位数,二、逆序打印出各位数字。  【程序21】  题目:个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。  【程序22】  ...
  •  实例057 获取当前日期星期 72  实例058 获取当前年天数 73  实例059 获取当前月天数 74  实例060 取得当前日期天 75  实例061 将日期格式化为指定格式 76  实例062 使用DateDiff方法获取...
  • 5、个自然数与3和是5倍数,与3差是6倍数,这个自然数最小是几? 6、在400–500之间求个数,它被2除余1,被5除余3,被9除余1,这个数是多少? 7、有一些四位数,百位数字都是3,十位数字都是6,

    循环加强

    练习题

    1、求一个数是否是质数(素数)?

    友情提示:质数是只能被1和自身整除的数字

    2、求50~150之间的质数是那些?

    3、图案的打印

    4、完整计算器程序
    用户输入第一个数据
    用户输入操作符号
    用户输入第二个数据
    运算展示结果
    扩展:eval()函数的使用

    5、一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几?

    6、在400–500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少?

    7、有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?
    8、打印输出标准水仙花数,输出这些水仙花数

    9.编程求一个四位自然数ABCD,它乘以A后变成DCBA

    10.编程求出满足以下条件的三位数:它除以11所得的商等于
    它各位数字之和.

    11.某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去
    除余数都是1,求这 个自然数.

    12.有一种最简真分数,它们的分子与分母的乘积都是140,把
    所有这样的真分数从小到大打印出来

    13.一个五位数,若在它的后面写上一个7,得到一个六位数A,
    若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此
    五位数.

    14.把123456789这个数乘以一个什么数,能使它的结果不但
    不含零,而且仍然是 由1,2,3,4,5,6,7,8,9这九个数字组成的,
    只是顺序不同而已.

    15.验证:任意一个大于9的整数减去它的各位数字之和所得
    的差,一定能被9整除.

    16.今有四个人,他们得年龄各不相同,他们年龄总和是129,
    而其中有三个人的年龄是平方数,若倒退15年,这四人中仍
    有三个人的年龄是平方数,求他们各自的年龄

    17.如果两个素数之差为2,这样的两个素数就叫作"孪生数",
    找出100以内的所有"孪生数".

    18、判断某一年是否是闰年

    解题

    ​ 1、求一个数是否是质数(素数)?

    友情提示:质数是只能被1和自身整除的数字

    import sys
    while True:
    	print("1.进入系统 2.退出系统")
    	choice = int(input("请做出选择:"))
    	if choice == 1:
    		num = int(input("请输入一个数字:"))
    
    		#定义一个布尔值,flag为真代表是素数
    		flag = True
    		#range(2,num)表示了1-num之间的数字,用num整除这之间的数字,若为0了,则不是素数,反之亦然
    		for i in range(2,num):
    			if num%i == 0:
    				#被整除了,所以不是质数,将flag设置为Flase
    				flag = False
    				#判断出来后,不需要再循环了,所以直接跳出即可
    				break
    		if flag:
    			print("{}是素数".format(num))
    		else:
    			print("%s不是素数" %(num))
    	elif choice == 2:
    		sys.exit()
    	else:
    		input("您的输入有误,请重新输入~ 按任意键继续")
    
    
    #执行代码
    D:\网络安全\Python\py_code>python h2-判断素数.py
    1.进入系统 2.退出系统
    请做出选择:3
    您的输入有误,请重新输入~ 按任意键继续
    1.进入系统 2.退出系统
    请做出选择:1
    请输入一个数字:67
    67是素数
    1.进入系统 2.退出系统
    请做出选择:1
    请输入一个数字:4
    4不是素数
    1.进入系统 2.退出系统
    请做出选择:2
    
    

    ​ 2、求50~150之间的质数是那些?

    import sys
    while True:
    	print("1.进入系统 2.退出系统")
    	choice = int(input("请做出选择:"))
    	if choice == 1:
    		#使用range()函数来实现可迭代对象
    		for num in range(50,151):
    			#定义一个布尔值,flag为真代表是素数
    			flag = True
    			#range(2,num)表示了1-num之间的数字,用num整除这之间的数字,若为0了,则不是素数,反之亦然
    			for i in range(2,num):
    				if num%i == 0:
    					#被整除了,所以不是质数,将flag设置为Flase
    					flag = False
    					#判断出来后,不需要再循环了,所以直接跳出即可
    					break
    			if flag:
    				print("{}是素数".format(num))
    			else:
    				#由于题目是只打印素数,所以else语句不做任何输出内容
    				pass
    	elif choice == 2:
    		sys.exit()
    	else:
    		input("您的输入有误,请重新输入~ 按任意键继续")
    
    
    
    #执行代码
    D:\网络安全\Python\py_code>python h2-判断素数.py
    1.进入系统 2.退出系统
    请做出选择:1
    53是素数
    59是素数
    61是素数
    67是素数
    71是素数
    73是素数
    79是素数
    83是素数
    89是素数
    97是素数
    101是素数
    103是素数
    107是素数
    109是素数
    113是素数
    127是素数
    131是素数
    137是素数
    139是素数
    149是素数
    1.进入系统 2.退出系统
    

    ​ 3、使用循环完成如下图案的打印

    *
    **
    ***
    ****
    *****
    分析:
    每行打印的内容就是行数
    
    layer = int(input("请输入需要打印的行数:"))
    #外层循环控制行数,4行;使用range()函数来进行迭代,1-5
    for i in range(1,layer+1):
    	#内层循环打印每行要显示的内容
    	for j in range(1,i+1):
    		print("*",end="")
    	print()
        
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    请输入需要打印的行数:5
    *
    **
    ***
    ****
    *****
    
       *
      ***
     *****
    *******
    分析:
    行数		空格数		 *
    1			3		1
    2			2		3
    3			1		5
    4			0		7
    可以看出每行打印的空格数位为 总的行数减去当前行数
    每行打印的*的个数位 当前行数乘21
    
    layer = int(input("请输入需要打印的行数:"))
    #外层循环控制行数;使用range()函数来进行迭代
    for i in range(1,layer+1):
    	#定义打印的空格与*的数量
    	space = layer-i
    	start = 2*i-1
    
    	#内层循环打印每行要显示的内容
    	#先打印空格
    	for j in range(space):
    		print(" ",end="")
    
    	#打印*
    	for k in range(start):
    		print("*",end="")
    	#每行打印完成后需要换行
    	print()
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    请输入需要打印的行数:5
        *
       ***
      *****
     *******
    *********
    
        *
       * *
      *   *
     *	   *
    *********
    分析:
    这个图案与上一个图案的区别在于中间打印*的空心结构,解决办法为在打印*时,做出判断
    
    layer = int(input("请输入需要打印的行数:"))
    #外层循环控制行数;使用range()函数来进行迭代
    for i in range(1,layer+1):
    	#定义打印的空格与*的数量
    	space = layer-i
    	start = 2*i-1
    
    	#内层循环打印每行要显示的内容
    	#先打印空格
    	for j in range(space):
    		print(" ",end="")
    
    	#打印*
    	for k in range(start):
    		#判断空心结构的空格何时打印,
    		if k == 0 or k == start-1 or i==layer:
    			print("*",end="")
    		else:
    			print(" ",end="")
    	#每行打印完成后需要换行
    	print()
    
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    请输入需要打印的行数:5
        *
       * *
      *   *
     *     *
    *********
    
       *
      ***
     *****
    *******
     *****
      ***
       *
    分析:
    这种对称结构,肯定是奇数行,可以分成上下两个部分来对图形进行打印,其余与第二个图案的打印方式相同
    
    layer = int(input("请输入需要打印的行数:"))
    
    #校验层数必须是奇数行,行数不能小于2
    while layer%2 ==0 or layer < 2:
    	layer = int(input("对不起,输入有误,请重新输入,按任意键继续~"))
    
    """上半部分"""
    #外层循环控制行数;使用range()函数来进行迭代;分为上半部分与下半部分;
    #把长的部分打印到上半部分为layer//2+1,又因为range()函数的迭代特性,再加上一个1
    for i in range(1,layer//2+2):
    	#定义打印的空格与*的数量
    	space = layer-i
    	start = 2*i-1
    
    	#内层循环打印每行要显示的内容
    	#先打印空格
    	for j in range(space):
    		print(" ",end="")
    
    	#打印*
    	for k in range(start):
    		print("*",end="")
    		
    	#每行打印完成后需要换行
    	print()
    
    """下半部分"""
    #从整除2的部分开始打印,即短的那部分开始,步长为-1,即每行每次缩短
    for i in range(layer//2,0,-1):
    	#定义打印的空格与*的数量
    	space = layer-i
    	start = 2*i-1
    
    	#内层循环打印每行要显示的内容
    	#先打印空格
    	for j in range(space):
    		print(" ",end="")
    
    	#打印*
    	for k in range(start):
    		print("*",end="")
    		
    	#每行打印完成后需要换行
    	print()
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    请输入需要打印的行数:9
            *
           ***
          *****
         *******
        *********
         *******
          *****
           ***
            *
    
       *
      * *
     *   *
    *     *
     *   *
      * *
       *
    分析:
    参考第三个图案的打印,注意上半部分的空格打印条件
    
    layer = int(input("请输入需要打印的行数:"))
    
    #校验层数必须是奇数行,行数不能小于2
    while layer%2 ==0 or layer < 2:
    	layer = int(input("对不起,输入有误,请重新输入,按任意键继续~"))
    
    """上半部分"""
    #外层循环控制行数;使用range()函数来进行迭代;分为上半部分与下半部分;
    #把长的部分打印到上半部分为layer//2+1,又因为range()函数的迭代特性,再加上一个1
    for i in range(1,layer//2+2):
    	#定义打印的空格与*的数量
    	space = layer-i
    	start = 2*i-1
    
    	#内层循环打印每行要显示的内容
    	#先打印空格
    	for j in range(space):
    		print(" ",end="")
    
    	#打印*
    	for k in range(start):
    		"""注意这里为什么要加2,因为上半部分打印的是长的,即多出来一行"""
    		if k == 0 or k == start-1 or i==layer//2+2:
    			print("*",end="")
    		else:
    			print(" ",end="")
    		
    	#每行打印完成后需要换行
    	print()
    
    """下半部分"""
    #从整除2的部分开始打印,即短的那部分开始,步长为-1,即每行每次缩短
    for i in range(layer//2,0,-1):
    	#定义打印的空格与*的数量
    	space = layer-i
    	start = 2*i-1
    
    	#内层循环打印每行要显示的内容
    	#先打印空格
    	for j in range(space):
    		print(" ",end="")
    
    	#打印*
    	for k in range(start):
    		"""注意这里是下半部分的打印;注意分析条件"""
    		if k == 0 or k == start-1:
    			print("*",end="")
    		else:
    			print(" ",end="")
    		
    	#每行打印完成后需要换行
    	print()
    
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    请输入需要打印的行数:9
            *
           * *
          *   *
         *     *
        *       *
         *     *
          *   *
           * *
            *
    
       *
      ***
     * * *
    *******
     * * *
      ***
       *		
    

    4、完整计算器程序
    ​ 用户输入第一个数据
    ​ 用户输入操作符号
    ​ 用户输入第二个数据
    ​ 运算展示结果
    ​ 扩展:eval()函数的使用

    import sys
    while True:
    	print("1.运行系统 2.退出系统")
    	choice = int(input())
    	if choice == 1:
    		#用户的输入
    		num1,num2 = eval(input("请输入两个操作数:"))
    		operator = input("请输入操作符:")
    		if operator == "+":
    			print("{}+{}={}".format(num1,num2,num1+num2))
    		elif operator == "-":
    			print("{}-{}={}".format(num1,num2,num1-num2))
    		elif operator == "*":
    			print("{}*{}={}".format(num1,num2,num1*num2))
    		elif operator == "/":
    			print("{}/{}={}".format(num1,num2,num1/num2))
    		else:
    			input("您的输入有误,请重新输入~ 按任意键继续")
    	elif choice == 2:
    		sys.exit()
    	else:
    		input("您的输入有误,请重新输入~ 按任意键继续")
    
    
    #执行代码
    D:\网络安全\Python\py_code>python h2-eval()函数的使用.py
    1.运行系统 2.退出系统
    1
    请输入两个操作数:1,3
    请输入操作符:-
    1-3=-2
    1.运行系统 2.退出系统
    3
    您的输入有误,请重新输入~ 按任意键继续
    1.运行系统 2.退出系统
    2
    
    D:\网络安全\Python\py_code>python h2-eval()函数的使用.py
    1.运行系统 2.退出系统
    3
    您的输入有误,请重新输入~ 按任意键继续
    1.运行系统 2.退出系统
    1
    请输入两个操作数:1,3
    请输入操作符:+
    1+3=4
    1.运行系统 2.退出系统
    1
    请输入两个操作数:1,5
    请输入操作符:-
    1-5=-4
    1.运行系统 2.退出系统
    1
    请输入两个操作数:2,3
    请输入操作符:*
    2*3=6
    1.运行系统 2.退出系统
    1
    请输入两个操作数:6,3
    请输入操作符:/
    6/3=2.0
    1.运行系统 2.退出系统
    2
    

    5、一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是几?

    for num in range(1000):
    	if ((num+3)%5==0) and ((num-3)%6==0):
    		break
    	else:
    		continue
    print(num)
    
    #执行代码
    D:\网络安全\Python\py_code>python "h2-最小的自然数(与3的和是5的倍数,与3的差是6的倍数).py"
    27
    

    6、在400–500之间求一个数,它被2除余1,被5除余3,被9除余1,这个数是多少?

    #range()函数来迭代400-500
    for i in range(400,501):
    	if ((i%2)==1) and ((i%5)==3) and ((i%9)==1):
    		print(i)
    #代码执行
    D:\网络安全\Python\py_code>python h3-第六题.py
    433
    

    7、有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

    for i in range(9999,1001,-1):
    	gewei = (i%1000)%100%10
    	shiwei = 6
    	baiwei = 3
    	qianwei = i//1000
    	change = gewei+shiwei*10+baiwei*100+qianwei*1000 
    	if ((change%2) == 0 and (change%3) == 0):
    		break
    print(change)
    for i in range(1000,10000):
    	gewei = (i%1000)%100%10
    	shiwei = 6
    	baiwei = 3
    	qianwei = i//1000
    	change = gewei+shiwei*10+baiwei*100+qianwei*1000 
    	if ((change%2) == 0 and (change%3) == 0):
    		break
    print(change)
    
    #执行代码
    D:\网络安全\Python\py_code>python de.py
    9366
    1362
    

    8、打印输出标准水仙花数,输出这些水仙花数

    分析:所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1^3 + 5^3 + 3^3

    for i in  range(100,1000):
    	gewei = (i%100)%10
    	shiwei = (i%100)//10
    	baiwei = i//100
    	if (gewei**3)+(shiwei**3)+(baiwei**3) == i:
    		print(i)
    
    #执行代码
    D:\网络安全\Python\py_code>python de.py
    153
    370
    371
    407
    
    

    9.编程求一个四位自然数ABCD,它乘以A后变成DCBA

    #使用range()函数来确定四位数的迭代对象
    for i in range(1000,10000):
    	gewei = (i%1000)%100%10
    	shiwei = (i%1000)%100//10
    	baiwei = (i%1000)//100
    	qianwei = i//1000
        #DCBA的计算方式
    	change = gewei*1000+shiwei*100+baiwei*10+qianwei
    	if (i*qianwei) == change:
    		print(i,end="\t")
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    1001    1111    1221    1331    1441    1551    1661    1771    1881    1991
    

    10.编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和.

    #使用range()函数来确定三位数的迭代对象
    for i in range(100,1000):
    	baiwei = i//100
    	gewei = (i%100)%10
    	shiwei = (i%100)//10
    	if (i//11) ==(gewei+shiwei+baiwei):
    		print(i)
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    108     118     128     138     148     158     168     178     188     197     198
    

    11.某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这个自然数.

    分析:某数整除80所得 可以%7 为0;某数%2,3,4,5,6为1

    flag = 0
    for i in range(1,1000):
    	shang = 80//i
    	yushu = i%80
    	a = i%2
    	b = i%3
    	c = i%4
    	d = i%5
    	e = i%6
    	if shang%7==0 and a==1 and b==1 and c==1 and d==1 and e==1:
    		flag += 1
    		print(i,end="\t")
    		#flag为5或10时,换行,用于输出结果易观察
    		if flag == 5 or flag == 10:
    			print()
    
    #执行代码
    D:\网络安全\Python\py_code>python de.py
    121     181     241     301     361
    421     481     541     601     661
    721     781     841     901     961
    

    12.有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来

    #首先要确认分子分母的大小范围,当然为了,省事,可以写大点,但是为了降低代码的时间、空间复杂度,建议先分析
    for i in range(1,11):
    	for j in range(i+1,141):
    		if i*j == 140:
    			print("{}/{}".format(i,j))
    
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    1/140
    2/70
    4/35
    5/28
    7/20
    10/14
    

    13.一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

    #使用range()函数来确定五位数的迭代对象
    for i in range(10000,100000):
    	gewei = (i%10000)%1000%100%10
    	shiwei = (i%10000)%1000%100//10
    	baiwei = (i%10000)%1000//100
    	qianwei = (i%10000)//1000
    	wanwei = i//10000
    	#A、B的计算方式
    	a = 7+gewei*10+shiwei*100+baiwei*1000+qianwei*10000+wanwei*100000
    	b = gewei+shiwei*10+baiwei*100+qianwei*1000+wanwei*10000+7*100000
    	if b == a*5:
    		print(i)
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    14285
    

    14.把123456789这个数乘以一个什么数,能使它的结果不但不含零,而且仍然是 由1,2,3,4,5,6,7,8,9这九个数字组成的,只是顺序不同而已.

    15.验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

    思路如下,也可通过循环来完善,即自动化判断输入的位数

    """
    	验证:任意一个大于9的整数减去它的各位数字之和所得
    	的差,一定能被9整除.
    """
    num = int(input("请输入一个大于9的整数:"))
    
    # (12 - (1 + 2)) / 9
    # 假如就是两位
    if num < 100:
    	gewei = num % 10
    	shiwei = num // 10
    	if (num - (gewei + shiwei)) % 9 == 0:
    		print("验证通过")
    	else:
    		print("验证失败")
    
    elif num > 99 and num < 1000:
    	# 三位数的
    	gewei = (num%100)%10
    	shiwei = (num%100)//10
    	bawei = num//100
    	if (num - (gewei + shiwei + bawei)) % 9 == 0:
    		print("验证通过")
    	else:
    		print("验证失败")
    else:
    	pass
    
    #代码执行
    D:\网络安全\Python\py_code>python test.py
    请输入一个大于9的整数:13
    验证通过
    
    D:\网络安全\Python\py_code>python test.py
    请输入一个大于9的整数:123
    验证通过
    

    16.今有四个人,他们得年龄各不相同,他们年龄总和是129,而其中有三个人的年龄是平方数,若倒退15年,这四人中仍有三个人的年龄是平方数,求他们各自的年龄

    17.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

    分析:

    需先判断出100以内的素数,然后将这些素数存储在某一种数据结构中,我采用的是列表,循环的方式判断”孪生数“

    ls = []
    #外层循环用于迭代0-100的数字,1不做判断
    for num in range(2,101):
    	#定义一个布尔值,flag为真代表是素数
    	flag = True
    	#内层循环用于判断
    	for i in range(2,num):
    		if num%i == 0:
    			#被整除了,所以不是质数,将flag设置为Flase
    			flag = False
    			#判断出来后,不需要再循环了,所以直接跳出即可
    			break
    	if flag:
    		#将所有的素数存储在容器中,这里的容器选择列表,因为可以通过下标来进行访问
    		ls.append(num)
    	else:
    		#由于题目是只打印素数,所以else语句不做任何输出内容
    		pass
    print("1~100以内的素数有:")
    print(ls)
    # 找出100内的孪生数
    index = 1
    while index < len(ls):
    	#为防止下标越界,采用如下方式
    	if ls[index] - ls[index - 1] == 2:
    		print("{}和{}是孪生数".format(ls[index], ls[index - 1]))
    	index += 1
    	
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    1~100以内的素数有:
    [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
    53是孪生数
    75是孪生数
    1311是孪生数
    1917是孪生数
    3129是孪生数
    4341是孪生数
    6159是孪生数
    7371是孪生数
    

    18、判断某一年是否是闰年

    分析:

    (1)能被4整除但不能被100整除;

    (2)能被400整除;

    year = int(input("请输入一个年份:"))
    if (year%4==0 and year%100!=0) or year%400 == 0:
    	print("%s是闰年"%year)
    else:
    	print("{}不是闰年".format(year))
    #执行代码
    D:\网络安全\Python\py_code>python test.py
    请输入一个年份:2000
    2000是闰年
    
    D:\网络安全\Python\py_code>python test.py
    请输入一个年份:1990
    1990不是闰年
    

    展开全文
  • python

    2021-01-17 21:57:07
    有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几? 2、编程求个四位自然数ABCD,它乘以A后变成DCBA 3、如果两个素数之差为2,这样的两个素数就...

    编程题

    有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几? 2、编程求一个四位自然数ABCD,它乘以A后变成DCBA 3、如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数"
    for i in range(1000,10000):
    if ((i // 100) % 10) 3 and ((i // 10) % 10 ) 6 and (i % 2) == 0 and (i % 3) == 0:
    min = i
    print(‘这样的数最小是%s’%min)
    break
    #再从满足要求的最小的这个数开始查找符合要求最大的数,依次赋值给max,直到循环结束的max就是最大的符合要求的数
    for i in range(min,10000):
    if ((i // 100) % 10) 3 and ((i // 10) % 10 ) 6 and (i % 2) == 0 and (i % 3) == 0:
    max = i
    print(‘这样的数最大是%s’%max)

    展开全文
  • 如果你知道密码(当然不大于8位的,如果大于8,那易优是爆不出来),比如说你知道是6,那么你就只在6前面方框里打勾,别就不要选了,这样出来字典会最小,生成得快,起来也快. 如果不知道是几位,但只知道...
  • 却有着严格的要求,这数字电路的一个特点。 2 系统的总体设计: 2.1 原理设计 本频率计的设计以AT89S52 单片机为核心,利用它内部的定时/计数器完成 待测信号周期/频率的测量。单片机AT89S52 内部具有2 个16 ...
  • 本软件不仅是一个强大数学学习工具,包括了从初中到大学几乎所有数学函数、平面解析几何、重要公式等以及他们相关图像,而且也工程测量数理统计等部门最佳辅助运算工具,十几种统计分析预测模型及他们...
  • 很强ccna教程

    2013-12-02 15:02:54
    被选种的将管理距离最小的路由选择协议提供的路径。可手工配置管理距离。 管理距离的特点: Administrative distance 0到255 0最可信,两条到达同一网络的路由信息,路由器会选择ad值小的放入路由表 如果ad值一样...
  • 题意:给定两个素数四位m,n(不含前导0),求从m转化到n至少需要次 ...然后分别只变换个位,十位,百位,千位四种情况来bfs 注意:最高位数字不能为0,对于四位素数肯定都奇数,这样可以减少bfs次数
  • 因为树的高度 logn, 也二叉查找树所有形态中高度最小的树;我们试着来分析一下: <pre><code> // 对于颗包含 n 个节点完全二叉树 // 1. 除了最后层外,每层的节点层节点个数的2倍...
  • 5.7给定个不多于5位的正整数,要求:①求它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字。例如原数为321,应输出123。 13 5.8企业发放奖金根据利润提成。利润I低于或等于10万元时,奖金可提10%;...
  • 再将a[1]到a[9]中最小的数与a[1]对换……每比较一轮,找出一个未经排序的数中最小的一个。) 2. 有10个数存放在一个数组中,输入一个数,要求用折半查找法找出该数数组中第个元素的值。如果该数不在数组中,则...
  • 得到单元格编号组中最大的数或最小的数 标记出3个最大最小值 取前五名,后五名的方法 如何用公式求出最大值所在的行? 求多个最高分 如何求多条件的平均值 想求出第三大之数值 【查询和查找引用】 查找顺序公式 怎样...
  • java 经典习题.doc

    2009-09-16 11:32:59
    程序分析:对n进行分解质因数,应先找到最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k...
  • 2004-2010软考程序员真题

    热门讨论 2012-09-27 12:33:00
     9、微机中1K字节表示的二进制位数是  A)1000 B)8x1000 C)1024 D)8x1024  10、下列字符中,ASCII码值最小的是  A)a B)A C)x D)Y  11、Windows 98操作系统是个  A)单用户多任务操作系统 B)单用户单任务操作...
  • 练习P20入门版答案

    2018-04-20 10:51:04
    个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。编程找出所有符合条件三位数。 注:1. 不能手算后直接打印结果。 2. “质数”即“素数”,指除1和自身...
  • 2.4.10 RAND——返回0到1之间的一个随机数 89 2.4.11 RANDBETWEEN——返回某个范围内的随机数 91 2.5 三角函数计算 91 2.5.1 DEGREES——将弧度转换为角度 91 2.5.2 RADIANS——将角度转换为弧度 92 2.5.3 SIN...
  • hoj 1018 - Multiple

    2008-02-02 14:41:00
    http://acm.hit.edu.cn/ojs/show.php?Proid=1018&Contestid=0 历时两天,...思想很简单,先搜一位数,然后两数~~直到搜到答案或搜索不能继续为止.搜索前要先对Xi进行排序,以保证搜到最小.注意答案可能很大,因此要用
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    得到单元格编号组中最大的数或最小的数 标记出3个最大最小值 取前五名,后五名的方法 如何用公式求出最大值所在的行? 求多个最高分 如何求多条件的平均值 想求出第三大之数值 【查询和查找引用】 查找顺序公式 怎样...
  • 给变量赋初值变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。 3.在变量说明中,不允许连续给多个变量赋初值。 如下述说明错误的: int a=b=c=5 必须...
  • EXCEL函数功能整理版

    2010-05-30 15:56:24
    10 ABS 这个函数用来计算个数绝对值,与正负数符号没有关系。 11 ACCRINT 返回定期付息有价证券应计利息。 12 ACOS 返回数字反余弦值。反余弦值角度,它余弦值为数字。返回角度值以...
  • 091 计算工龄最小的女员工的工龄 179 092 计算材料的3个最少消耗量 180 093 提取每月销量倒数第二的商品 182 ◎中值函数 183 094 计算3月份产品销量中值 183 095 设定社保缴费基数上下限 185 096 查找...
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    其中,m和n都整数,m指定总位数,n指定小数点后保留几位,如果m或n不足,则按实际位数输出。 例1:指定小数点后保留2,其余四舍五入: %.2f 3.14159 = 3.14 例2:指定全部5,且小数点后保留3,其余...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

十位最小的一位数是几