精华内容
下载资源
问答
  • 1062 -- 最左边一位数

    千次阅读 2015-08-29 16:43:49
    1062 -- 最左边一位数

    最左边一位数

    Time Limit:1000MS  Memory Limit:65536K
    Total Submit:112 Accepted:24

    Description

    对于给定的正整数N,输出N^N的最左边一位数。

    Input

    输入包含多组测试数据。输入的第一行是一个整数T,代表测试组数。随后输入T组测试数据,每组测试数据包含一个正整数N ( 1< = N< = 1,000,000,000 ).

    Output

    对于每组测试数据,输出N^N次方的最左边一位数。

    Sample Input

    2
    3
    4

    Sample Output

    2
    2

    Hint

    在第一组测试数据中,3 * 3 * 3 = 27,所以最左边一位数是2.
    在第二组测试数据中,4 * 4 * 4 * 4 = 256,所以最左边一位数是2.

    Source

    HDU翻译

    展开全文
  • sqlserver位数不够左边补0

    万次阅读 2018-08-07 20:46:28
    有的时候需要循环存放一1开始的字符串 、位数还有要求,我第一次在写的时候想着在左边拼接几个0不就行了,写完我就发现超过10就不行了,位数超了 这个时候就需要用到左补0方法 下面我给大家一个示例:   ...

    有的时候需要循环存放一从1开始的字符串 、位数还有要求,我第一次在写的时候想着在左边拼接几个0不就行了,写完我就发现超过10就不行了,位数超了

    这个时候就需要用到左补0方法

    下面我给大家一个示例:

     

    DECLARE @NUM INT=7
    WHILE (@NUM <=14)
    BEGIN
        SELECT RIGHT('0000000'+CONVERT(VARCHAR(50),1+@NUM),7)
        SET @NUM+=1
    END

     

    这样就实现了

    展开全文
  •  123321是个非常特殊的,它从左边读和右边读是一样的。    输入个正整数n, 编程求所有这样的五和六十进制,满足各位数字之和等于n 。   输入格式    输入行,包含个正整数n。   输出格式 ...

    小可爱们大家好
    这次是本小殿下第一次写文章多多担待哦^ - ^。

    问题描述
      
      123321是一个非常特殊的数,它从左边读和从右边读是一样的。
      
      输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
      
    输入格式
      
      输入一行,包含一个正整数n。
      
    输出格式
      
      按从小到大的顺序输出满足条件的整数,每个整数占一行。

    样例输入

    52

    样例输出

    899998
    989989
    998899

    数据规模和约定,1<=n<=54。
    此题属于基础题,不难,但可以尽量把时间复杂的降低也不失是一种乐趣* - *。

    枚举+判断 JAVA

    import java.util.Scanner;
    public class Palindrome {
    	public static void main(String[] agrs) {
    		int n = 0;
    		int i = 0, j = 0, k = 0;
    		Scanner m = new Scanner(System.in);
    		if (m.hasNext()) {
    			n = m.nextInt();
    		}
    		for (i = 1; i < 10; i++) {
    			for (j = 0; j < 10; j++) {
    				for (k = 0; k < 10; k++) {
    					if (i * 2 + j * 2 + k == n)
    						System.out.println("" + i + j + k + j + i);
    				}
    			}
    		}
    		for (i = 1; i < 10; i++) {
    			for (j = 0; j < 10; j++) {
    				for (k = 0; k < 10; k++) {
    					if (i * 2 + j * 2 + k * 2 == n)
    						System.out.println("" + i + j + k + k + j + i);
    				}
    
    			}
    		}
    	}
    }
    

    答案
    在蓝桥杯的检测中有很多细节的地方需要注意!!!
    不然会纠结很久。

    1. 答案的顺序很重要,顺序指的是
      589985
      598895
      不能变为
      598895
      589985
      也就是在编程中for循环
    for (i = 1; i < 10; i++) {
    			for (j = 0; j < 10; j++) {
    				for (k = 0; k < 10; k++) {
    

    不能改为

    for (i = 1; i < 10; i++) {
    			for (j = 9; j >=0; j--) {
    				for (k = 0; k < 10; k++) {
    

    虽然看似结果一样但测试会不通过!!!
    2. 注意5位整数或5位整数,则像正常数字一样最小的是10000,也就是除第一位意外,其余位皆可为0。
    3. System.out.println("" + i + j + k + j + i);
    在JAVA中像输出5个连续的整数需要在尾部或首部添加 “”。

    进阶版(考虑奇偶性)

    import java.util.Scanner;
    
    public class Palindrome2 {
    
    	public static void main(String[] args) {
    		int n = 0;
    		int i, j, k, l;
    		Scanner sc = new Scanner(System.in);
    		if (sc.hasNext()) {
    			n = sc.nextInt();
    		}
    			/* 单数的情况和含有五位数的偶数部分 */
    //			先看中间位
    			if (n % 2 == 0) {
    				l = 8;/* 当n为偶数时中间位最大为8 */
    			}
    			else {
    				l = 9;/* 奇数时最大可为9 */
    	}
    			for (k =1; k <10; k++) {
    				for (j = 0; j <10; j++) {
    					for (i = 0; i <=l; i++) {
    						if (k * 2 + j * 2 + i == n)
    							System.out.println("" + k + j + i + j + k);
    					}
    				}
    			}
    		if(n%2==0){/* 只有偶数的情况才会出现6位数 */
    			for (i = 1; i < 10; i++) {
    				for (j = 0; j < 10; j++) {
    					for (k = 0; k < 10; k++) {
    						if (2 * i + 2 * j + 2 * k == n)
    							System.out.println("" + i + j + k + k + j + i);
    					}
    				}
    			}
    		} 
    	}
    }
    
    

    由于代码不难就不做过多解释啦,有问题的小宝宝可以私聊我。

    C++ (方法与上面相同)

    #include<iostream>
    #include<algorithm>
    using namespace std;
    int ans[1000005];
    int main()
    {
      int n,now,t=0;
      cin>>n;
      if(n%2==0)//只有偶数才有6位十进制数的可能
      {
        now=n/2;
        for(int i=9;i>=1;i--)//第一位不能为0
        {
          if(now-i>=0)
          {
            for(int j=9;j>=0;j--)
            {
              if(now-i-j>=0)
              {
                for(int k=9;k>=0;k--)
                {
                  if(i+j+k==now)
                  {
                    ans[t++]=i*100000+j*10000+k*1000+k*100+j*10+i;
                  }
                }
              }
            }
          }
        }
      }
      //五位数的情况
        int l;
        if(n%2==0)
        {
          l=8;
        }
        else
          l=9;
        for(int i=l;i>=0;i=i-2)//先考虑最中间位数的情况,如果n是偶数,则最中间的一定是偶数,如果n是奇数,则中间位为奇数
        {
          if(n-i>=0)
          {
            now=(n-i)/2;
            for(int j=9;j>=1;j--)//首位不为0
            {
              if(now-j>=0)
              {
                for(int k=9;k>=0;k--)
                {
                  if(j+k==now)
                    ans[t++]=j*10000+k*1000+i*100+k*10+j;
                }
              }
            
            }
          }
    
        }
      sort(ans,ans+t);
      for(int i=0;i<t;i++)
      {
          cout<<ans[i]<<endl;
      }
      return 0;
    }
    
    展开全文
  • 1.先贴我的代码,VC6.0开发环境下去掉5行。 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main(){ 5 setvbuf(stdout,NULL,_IONBF,0); 6 int value; 7 int getodds(int value);...

    1.先贴我的代码,VC6.0开发环境下去掉第5行。

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 int main(){
     5     setvbuf(stdout,NULL,_IONBF,0);
     6     int value;
     7     int getodds(int value);
     8 
     9     printf("Input the value:");
    10     scanf("%o",&value);
    11 
    12     printf("The result is %o.",getodds(value));
    13 
    14     return EXIT_SUCCESS;
    15 }
    16 
    17 int getodds(int value){
    18     int result=0;
    19     int i;
    20     int t;
    21     for(i=0;i<8;i++)
    22     {
    23         t=1<<(2*i+1);
    24         result=result+((value&t)>>(i+1));
    25     }
    26     return result;
    27 }

    我的思路是这样的:

    把二进制数的奇数位,共8位,依次存放到另一个二进制数的后8位中。解释如下:

    从后往前,每次取二进制数奇数位中的1位,将得到的数分别右移若干位,循环8次,将每次右移后的数相加即可。

    1).  xxxx  xxxx  xxxx  xxxx

    &   0000  0000  0000  0010  1<<1

         0000  0000  0000  00x0

         0000  0000  0000  000x  右移1位

    2).  xxxx  xxxx  xxxx  xxxx

    &   0000  0000  0000  1000  1<<3

         0000  0000  0000  x000

         0000  0000  0000  00x0  右移2位

    3).  xxxx  xxxx  xxxx  xxxx

    &   0000  0000  0010  0000  1<<5

         0000  0000  00x0  0000

         0000  0000  0000  0x00  右移3位

    ……循环8次,将每次的和相加,即为最后的值。

            循环变量i    0 1 2 3 4……

           1左移的次数      1 3 5 7 9……  2*i+1

    相与后的数右移的次数 1 2 3 4 5……  i+1

    2.再贴上谭浩强的思路:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<math.h>
     4 
     5 int main(){
     6     setvbuf(stdout,NULL,_IONBF,0);
     7     unsigned short value;
     8     unsigned short getodds(unsigned short);
     9 
    10     printf("Input the value:");
    11     scanf("%o",&value);
    12 
    13     printf("The result is %o.",getodds(value));
    14 
    15     return EXIT_SUCCESS;
    16 }
    17 
    18 unsigned short getodds(unsigned short value){
    19     unsigned short result=0;
    20     int i;
    21     unsigned short a,b,c,power;
    22     for(i=0;i<8;i++)
    23     {
    24 
    25         power=pow(2,7-i);
    26         a=value>>(15-2*i);
    27         b=a<<15;
    28         c=b>>15;
    29         result=result+c*power;
    30     }
    31     return result;
    32 }

    这个解法的思路是这样的,依次取出奇数位的值,再乘以相应的权重,然后将每次的值相加。

    比如,

    取第1位的值是这样的,将二进制数右移15位,第1位的值就到了最后1位,然后将二进制数左移15位,再右移15位,所得的数就是第1位的值了,1或者0,再乘以权重2**7;

    第3位,将二进制数右移13位,第3位的值就到了最后1位,然后将二进制数左移15位,再右移15位,所得的数就是第3位的值了,1或者0,再乘以权重2**6;

    依次类推。先左移15位,再右移15位的目的是将除要取出的位之外的其它位变为0。

    这个算法必须用短整型,刚开始我在我的代码上按照谭浩强的算法进行修改之后,一直出不来正确结果,调试半天,发现必须用短整型。我的算法不存在这个问题。

    转载于:https://www.cnblogs.com/Camilo/p/3376473.html

    展开全文
  • 如果从左边起取出1个数字,需要能被1整除,取出两个数字组成的能被2整除,取出三个数字组成的能被3整除,依次类推。。。每次取都是从左边取。问,这个什么?给出求解此的算法。   代码如下:...
  • 扩展个数字的表示和截断数字

    千次阅读 2016-08-27 11:07:18
    、扩展个数字的表示种常见的运算是在不同字长的整数之间转换,例如,从一个较小的数据类型转换到个较大的数据类型。将个无符号转换为个更大的数据类型,只需要简单地在表示的开头添加 0,这种运算...
  • 1.求个序列的中位数(c++)

    千次阅读 2019-07-12 02:45:36
    2、能够得到这个序列的中位数位数定义: #1.如果元素个是偶数,返回已排序序列最中间的两个数字的平均 #2.如果元素个是奇数,返回已排序序列中间那个 二、分析 能够看到该题的标记是hard,显...
  • 求四位数的回文

    千次阅读 2018-07-25 09:36:26
    问题描述  1221是一个非常特殊的,它从左边读和右边读是一样的,编程求所有这样的四位十进制...提示2:枚举所有的四位整数,将它们的三位分别分离出来,然后判断是否第一位与第四位相同且第二位和第三位相同。...
  • bfptr算法(即中位数的中位数算法)

    万次阅读 多人点赞 2018-08-25 22:35:16
    BFPRT算法是解决n个中选择k大或k小的这个经典问题的著名算法,但很多人并不了解其细节。本文将首先介绍求解这个k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度仍然为O(n)的BFPRT算法。 ...
  • 比如:111111,我要判断右到左3是0 或 1,怎么快速判断? coyerhc | 浏览 779 次 发布于2016-07-08 15:55 最佳答案 N:待判断的二进制 B:待判断的(右往左) 结果:((N>>...
  • java获取的二进制的某

    千次阅读 2018-03-20 17:00:13
    遇到的需求:给我一个byte类型的,然后获取二进制的第一位第二位,第三位第四位,第五位第六位,第七位第八位.. 其实就是把一个十进制的转换为二进制,然后分为四段拆分。 java 中byte占1个字节,1个字节八位...
  • 符号(sign)——s决定这个是负数(s=1)还是正数(s=0),而对于数值0的符号解释,作为特殊情况处理; 尾数(significand)——M决定浮点数的精度,它是个二进制小数; 阶码(exponent)——E的作用是对浮点数加权,...
  • 编程填空:左边i取反

    千次阅读 2017-08-20 13:04:52
    写出函数中缺失的部分,使得函数返回值为个整数,该整数的左边i是n的左边i取反,其余和n相同 请使用【行代码】补全bitManipulation3函数使得程序能达到上述的功能 #include using namespace std;
  • 之所以,起“快速排序和寻找中位数”这个题目,并不是因为寻找中位数的时候使用了快速排序,而是这两个算法使用了个同个预处理结构 —— 划分,然后都是递归解决!中位数的也是根据把原来的划分一下,...
  • 【技巧总结】运算装逼指南

    万次阅读 多人点赞 2019-11-18 13:34:09
    算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用运算这些技巧,当然,采用运算,也是...
  • 100亿个整数,找出中位数

    千次阅读 2017-07-26 10:50:51
    100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?... • 如果小于它的超过一半,那么中位数一定在左半边,递归到左边处理(还是几大) • 否则中位数一定在右半边,根据左半边的元素个
  • 首先打开数据的属性表,选中相应字段...去除左边第一个0采用的表达式是Right( [XIAO_BAN],4 ),其中XIAO_BAN表示字段名称。这种操作采用的是VB Script语言,可以参考VB Script对字符串或者其他类型进行操作编辑的方法。
  • 给出一个不多于5位的整数,要求 1、求出它是几位 2、分别输出每一位数字 3、按逆序输出各位数字,例如原为321,应输出123 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二行 用空格分开的每个...
  • SELECT *FROM tbl_product_storeWHERE (SUBSTRING(product_no, 2, 1) = '8') 查询字段product_no起到字段是8 的数据
  • 最近在公司开发个关于钢琴的PCBA项目,项目大概是这样的,完成各种功能的测试,准备去工厂量产的时候可以通过软件快速甄别硬件是否短路,断路等问题。  其中,甄别好坏的方法是... 音频信号是个16进制,比如
  • 近似与有效数字的概念 近似是由于近似存储(内存空间有限)引起的。 近似是由四舍五入得来的,如10/3中的3是一个准确,而3.3是它...而有效数字是对于近似数从左边第一个不是0的数字起,到精确到的数位止...
  • 解题报告 (十四) 数位DP

    千次阅读 2021-04-24 05:56:56
    数位DP解题报告
  • 【C语言】判断是不是回文

    万次阅读 多人点赞 2018-08-16 15:59:19
    所谓回文,就是说个数字从左边读和右边读的结果是一模一样的,例如12321。判断给出的整数是否是回文;若是,则输出该整数各位数字之和;否则输出该不是个回文。 原理大致为:任何除以10的余数...
  • 给出个n位数,要求删掉其中k数字,使得剩下的数字组成的尽量大。 输入 1行:两个正整数n, k(1 ,000)。 2行:个n正整数(无前导0)。 输出 输出行,个正整数,表示剩下的的最大值。 样例输入 4...
  • 令dp[i][j][sum]dp[i][j][sum]dp[i][j][sum]表示iii的数字中,平衡点在jjj个数字,平衡点左边的力矩减右边力矩的大小为sumsumsum的数字的个数. 枚举平衡点的位置,然后爆搞一下就完事了. #i...
  • 求无序数组的中位数(c语言版本)

    千次阅读 2019-03-22 16:06:41
    很多人往往都会第一感觉就是,先将该数组排序,然后找出最中间的那个,但是这种思路通常的时间复杂度最好是O(nlogn),更糟的情况下会到O(n^2),并不是最优解,也就不能impressed面试官了。下面我们聊聊这个话题。 ...
  • import java.util.Arrays...* 给定个存放整数的数组,重新排列组使得数组左边为奇数,右边为偶数。 要求:,时间复杂度为O(n)。 * */ //空间复杂度O(1) public class Arrays_Resum { /* 解决思路:数组左边lef
  • BFPRT(中位数的中位数)算法

    千次阅读 2017-10-09 16:05:05
    BFPRT 算法又称为 “中位数的中位数算法”,该算法由 Blum、Floyd、Pratt、Rivest、Tarjan 在1973年提出,最坏时间复杂度为 O(n) TOP-K问题
  • 位数及带权中位数问题

    千次阅读 2016-02-01 16:18:57
    信息学竞赛总是时不时与数学产生微妙的关系,中位数及带权中位数问题有时常常成为解题的关键,今日有时间,所以梳理一下。 先从一到简单的题看起: 士兵站队问题 在个划分成网格的操场上,n个士兵散乱地站在...
  • 请找出两个排序数组的中位数并且总的运行时间复杂度为 O(log (m+n)) 。 示例 1: nums1 = [1, 3] nums2 = [2] 中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 中位数是 (2 + 3)/2 = 2.5 这是问题,我刚...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 192,905
精华内容 77,162
关键字:

从左边数第一位是什么位