精华内容
下载资源
问答
  • Java 将一个数拆分成任意几个数的和

    万次阅读 2019-08-02 22:33:01
    Java 将一个数拆分成任意几个数的和(以下代码可否有优化之处求教) package top.smartprinting; import java.util.Random; /** * @author Chief * @date 2019-07-20 16:08 * @Email MyEvery7655@gmail.com */...

    Java 将一个数拆分成任意几个数的和(以下代码可否有优化之处求教)

    package top.smartprinting;
    
    import java.util.Random;
    
    /**
     * @author Chief
     * @date 2019-07-20 16:08
     * @Email MyEvery7655@gmail.com
     */
    public class Algorithm {
    
        public static void main(String[] args) {
            //第一种:传统的方式
            dividingLine("第一种");
            splitInto(20, 21);
    
            //第二种:使用数组寄存分解后的数字
            dividingLine("第二种");
            int[] numberOfSplitsArrays = splitInto(20, new int[22]);
            //遍历数组
            traversing(numberOfSplitsArrays);
            //求数组所有元素的和
            summation(numberOfSplitsArrays);
        }
    
        /**
         * 将一个数拆分成任意几个数的和
         *
         * @param number         将要被拆分的数
         * @param numberOfSplits 将要被拆分成的数量
         */
        private static void splitInto(int number, int numberOfSplits) {
            Random random = new Random();
            int rawData = number;
            int temp = 0;
            for (int i = 0; i < numberOfSplits - 1; i++) {
                if (number > 1) {
                    int j = random.nextInt(number - 1) + 1;
                    number -= j;
                    temp += j;
                    System.out.println(j);
                } else if (temp + 1 == rawData) {
                    System.out.println(number);
                    for (int j = 1; j < numberOfSplits - i; j++) {
                        System.out.println(0);
                    }
                    break;
                }
            }
        }
    
        /**
         * 将一个数拆分成任意几个数的和
         *
         * @param number         将要被拆分的数
         * @param numberOfSplits 将要被拆分成的数量的数组
         * @return 返回一个数组
         */
        private static int[] splitInto(int number, int[] numberOfSplits) {
            Random random = new Random();
            for (int i = 1; i < numberOfSplits.length; i++) {
                if (number > 1) {
                    int j = random.nextInt(number - 1) + 1;
                    number -= j;
                    numberOfSplits[i] = j;
                } else if (number == 1) {
                    numberOfSplits[i + 1] = number;
                    break;
                }
            }
            return numberOfSplits;
        }
    
        /**
         * 遍历数组的结果
         *
         * @param numberOfSplits 被拆分的数字的数组
         */
        private static void traversing(int[] numberOfSplits) {
            System.out.println("遍历数组的结果");
            for (int i : numberOfSplits) {
                System.out.println(i);
            }
        }
    
        /**
         * 求数组所有元素的和【用于验证上面第二种方式的正确性】
         *
         * @param numberOfSplits 被拆分的数字的数组
         */
        private static void summation(int[] numberOfSplits) {
            int temp = 0;
            for (int i : numberOfSplits) {
                temp += i;
            }
            System.out.println("\n校验求取数组的所有元素的和为:" + temp);
        }
    
    
        private static void dividingLine(String no) {
            System.out.println("\n####################### " + no + " #######################");
        }
    
    }
    
    展开全文
  • 方法1 import random lst = [] rep_lst = [] #重复数字 uniq_lst = [] #不重复数字 ... temp = random.randint(1,20) #产生随机数,闭区间 if temp in lst and temp not in rep_lst: #寻找重复数字 rep...

    方法1

    import random
    lst = []
    rep_lst = []   #重复数字
    uniq_lst = []  #不重复数字
    for i in range(10):
        temp = random.randint(1,20)   #产生随机数,闭区间
        if temp in lst and temp not in rep_lst:   #寻找重复数字
            rep_lst.append(temp)
        lst.append(temp)
    for j in lst:
        if j not in rep_lst:
            uniq_lst.append(j)
    print(lst)
    print(len(rep_lst),':',rep_lst)
    print(len(uniq_lst),':',uniq_lst)
    

    输出结果:
    [17, 19, 1, 13, 15, 18, 9, 19, 11, 10]
    1 : [19]
    8 : [17, 1, 13, 15, 18, 9, 11, 10]

    方法2

    import random
    lst = [0] * 21
    stri = ""
    strimin = ""
    strimax = ""
    for i in range(10):
        num = random.randint(1,20)
        lst[num] += 1
    maxnum = max(lst)
    for j in range(1,21):
        if lst[j] > 0:
            stri += "{},".format(j)
        if lst[j] == 1:
            strimin += "{},".format(j)
        if lst[j] == maxnum:
            strimax += "{},".format(j)
    print("数字最多出现过{}次".format(maxnum))
    print("数字出现有:{}其中{}出现过{}次,{}只出现过1次".format(stri,strimax,maxnum,strimin))
    

    输出结果:
    数字最多出现过2次
    数字出现有:1,2,3,4,5,8,9,10,20,,其中4,出现过2次,1,2,3,5,8,9,10,20,只出现过1次

    方法3
    思路:对于一个排序数列,相等数字会在一起,但排序耗时,不排序解决?
    例如:11,7,5,11,6,7,4,先拿出11,依次从第二个数字开始比较,发现11就把对应索引标记,这样一趟比较即可知道11是否重复,那些地方重复;第二趟使用7和其后数字依次比较,发现7就标记,当遇到以前比较过的11的位置的时候,其索引已经被标记为1,直接跳过(如下所示)
    第1次
    状态标记:1 1
    索引情况:0 1 2 3 4
    随机序列:11 7 6 11 7
    第2次
    状态标记:1 1 1 1
    索引情况:0 1 2 3 4
    随机序列:11 7 6 11 7

    import random
    nums = []
    for _ in range(10):
        nums.append(random.randrange(21))
    print("原始数据为={}".format(nums))
    print()
    
    length = len(nums)
    samenums = [] #记录相同的数字
    diffnums = [] #记录不同的数字
    states = [0] * length # 记录不同的索引异同状态
    
    for i in range(length):
        flage = False #假定没有重复
        if states[i] == 1:
            continue
        for j in range(i+1,length):
            if nums[i] ==nums[j]:
                flag = True
                states[j] = 1
        if flage: #有重复
            samenums.append(nums[i])
            states[i] = 1
        else:
            diffnums.append(nums[i])
    print("重复数字为{1},次数为{0}".format(len(samenums),samenums))
    print("不重复数字为{1},次数为{0}".format(len(diffnums),diffnums))
    print(list(zip(states,nums)))
    

    输出结果:
    原始数据为=[15, 13, 1, 14, 3, 3, 19, 10, 5, 16]
    重复数字为[],次数为0
    不重复数字为[15, 13, 1, 14, 3, 19, 10, 5, 16],次数为9
    [(0, 15), (0, 13), (0, 1), (0, 14), (0, 3), (1, 3), (0, 19), (0, 10), (0, 5), (0, 16)]

    展开全文
  • 题目一个只有2、3、5或7的质数的数被称为一个不起眼的数。第1、2、3、4、5、6、7、8、9、10、12、14、15、16、18、20、21、24、25、27、...我的想法:分别算出来一个数是2,3,5,7的次方,再将次数相乘,然后发...

    题目

    一个只有2、3、5或7的质数的数被称为一个不起眼的数。第1、2、3、4、5、6、7、8、9、10、12、14、15、16、18、20、21、24、25、27、……显示前20个不起眼的数字。

    现在给出一个简单的数字,请编写一个程序来计算这个简单数字的因数个数。例如,4是一个不起眼的,它有3个因数(1,2,4);12有6个因数。

    我的想法:分别算出来一个数是2,3,5,7的几次方,再将次数相乘,然后发现结果不对,好像只有一个质因子的时候这么干不行,因为只有一个你没法和人家匹配啊,于是我就把只有一个质因子的情况单独讨论,结果还是不对,好像还落了这个数本身(不和其他数匹配的情况)于是又把每个质因子的次数再加在一起,最后再加一(本身1就是一个因子),结果都对,可是还是wa........,真烦人。

    实际答案还是先算出来一个数是2,3,5,7的几次方,但要将他们的次数分别加一再相乘(即把0次方也算在里面),这样就可以避免只有一个质因子时要单独算的情况,也不用最后再加一了。

    主要代码如下
     while (scanf("%I64d", &n), n)
        {
            Int num[4] = {2, 3, 5, 7};
            int ans[4] = {1, 1, 1, 1};//由在算的时候没有把0个2,0个3,0个5或者0个7的情况计算进去,所以一开始就加上
            for (int i = 0; i < n; i++)
            {
                while (n != 1 && n % num[i] == 0)//算出2,3,5,7的个数
                {
                    ans[i]++;
                    n /= num[i];
                }
            }
            printf("%d\n", ans[0] * ans[1] * ans[2] * ans[3]);
        }
    

    展开全文
  • Pandas 关于统计个数几个总结

    万次阅读 2018-12-16 11:36:47
    我们都知道 df.value_counts()是统计个数的小能手。那么怎么更熟练地运用起来呢? 以下是自己总结地种场景: &gt;&gt;&gt;&gt;&gt;df 0 美国 1 中国大陆 香港 2 法国 3 美国 4 意大利 5 ....

    我们都知道 df.value_counts()是统计个数的小能手。那么怎么更熟练地运用起来呢?

    以下是自己总结地几种场景:

    >>>>>df
    
    0               美国
    1          中国大陆 香港
    2               法国
    3               美国
    4              意大利
    5               美国
    6               日本
    7               美国
    8            美国 英国
    9               美国
    10           美国 英国
    11              印度
    12             意大利
    13        法国 瑞士 德国
    14         香港 中国大陆
    15              美国
    16              美国
    17    美国 英国 加拿大 冰岛
    18              日本
    19              韩国
    20              香港
    21              美国
    22              法国
    23              美国
    24              美国

     统计每行出现的次数

    >>>counts=df.value_counts()
    >>>print(counts)
    
    美国              10
    日本               2
    美国 英国            2
    意大利              2
    法国               2
    美国 英国 加拿大 冰岛     1
    香港               1
    香港 中国大陆          1
    韩国               1
    法国 瑞士 德国         1
    印度               1
    中国大陆 香港          1

    统计个数大于1的分别有哪些

    >>>print(counts[counts>1])
    
    美国       10
    日本        2
    美国 英国     2
    意大利       2
    法国        2

    统计美国出现的次数

    >>>print(list(country).count('美国'))
    
    10

    注意以上只会统计单一出现 “美国” 的情况,如果也想加上"美国 英国”的情况

    需要用到以下的函数: str.contains("xx").sum()

    country_df = df.rename_axis('country').reset_index(name = 'counts')
    America_contain = country_df.country.str.contains("美国").sum()
    print(America_contain)

     

    展开全文
  • 也忘了报了张,原来也不照相,只记了一个数, 算了,写个程序吧,一个一个试呗,递归算法; 来,看例子:// 判断数组b对应的数组a中的元素之和是否为s public static boolean isSum(int a[], int b[], int n, ...
  • 例:数组A中抽取3个数,数组B中抽取2个数,数组C中抽取1个数,组成6个数的组合,求源程序。 A={3,4,6,7,8,9,11,13,14,15,16,18,19,20,24,27,28,29,33} B={1,2,10,12,17,21,22,25,26,30,31,32} C={5,23}
  • 方法为:十进制除2取余法,即十进制除2,余数为权位上的,得到的商值继续除依此步骤继续向下运算直到商为0为止。 十进制转换为其他的进制同理 2进制转换为8进制之类的转换可以借助十进制完成,即先转换为...
  • 判断输入的个几进制

    千次阅读 2007-11-30 16:37:00
    输入一个数,判断该数是个进制数。数的末尾加上标准的识别码(B[二进制,binary]、O[八进制,octal]、D[十进制,decimal]、H[十六进制],hex),如果不加识别码则默认为十进制数。#include #include main(){int i,m,n...
  • 上周旁听了一节小小的学而思数学网课,写一...A走B的动作,我分为5步,即向右,向右,向右,向上,向上。但是也可以换顺序,所以我只需要在5步骤里任意选3向右就是路径的总数量了, 即 C53C_5^3C53​ ...
  • 【面试现场】如何判断一个数是否在40亿个整数中? 【算法技巧】位运算装逼指南 对于算法题还是有点信心的,,,,于是,发现了如下对话。 20亿级别 面试官:如果我给你 2GB 的内存,并且给你 20 亿个 int 型整数,让...
  • 其中以数字0开头,由07组成的是八进制。 以0X或0x(0x中是数字0,不是大写字母O)开头,由0-9,A-F或a~f 组成是十六进制。 除表示正负的符号外,以1-9开头,由0-9组成是十进制。 1.十进制:除表示正负的符号外,...
  • 可以利用sort函数给数列a从小大排列,找前几个最大的。如下: [b,i]=sort(a)。b为从小大的数字,i为对应位置。要找前3个,如下输入: >> a=[3,15,6,21,18,2,18,19,1,4,7,29, 21 ,23 ,29 ,23, 14, 6, 9 ,29 ,31];...
  • 微信群中报数从【1】【30】

    千次阅读 2017-08-25 12:29:56
    目录:1、游戏名称及规则2、作者的开心话3、游戏案例4、游戏总结——————————————————————————————————————1、游戏名称及规则游戏名称:微信群中报数从【1】【30】 ...
  • java实现和为定值的两个数

    万次阅读 多人点赞 2019-07-21 17:50:40
    1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个...首先将整数数组,使用合并排序进行从小打的排序,然后对这个排完序的数组两头往中间遍历,一旦出现两个数的和等...
  • 给定一个整数数组,找出其中两个数相加等于目标值  例如:给定数组及目标值 nums = [2,7,11,15] ,target = 9  因为nums[0] + nums[1] = 2 + 7 = 9  返回[0,1] /** * 使用辅助空间(使用哈希表,时间复杂度是O...
  • 问题 B: 第N智慧

    千次阅读 2018-12-15 12:26:43
    一个正整数如果能表示成了两个正整数的平方差,则称这个数为“智慧数”,比如16就等于5的平方减去3的平方,所以16就是一个智慧数,1开始的自然数列中,将“智慧数”从小大编号为1,2,3,„„,n。现输入一个正...
  • 把两个题目放在了一起,输入H(D)+数字+空格+数字+空格就会看到和 可以参考输入示范的截图 输入H代表你输入16进制...计算两个在和在65535内的十进制数或16进制数的和,这两个数最多可以是五位十进制数 db 10 dup(0);用
  • 找出14000中,数字的各位数之和能被4整除的,如:745:7+4+5=16,16可以被4整除;28:2+8=10,10不能被4整除;745就是这样的特殊数字,而28不是,求:这样的数字共有多少?解:(1)对于4000,4+0+0+0=4,显然4000...
  • 完美

    千次阅读 2019-03-01 11:11:33
    说明:如果有一数n,其真因数(Proper factor)的总和等于n,则称之为完美数(Perfect Number), 例如以下几个数都是完美数: 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124...
  • 题目:有n个人围成一圈,顺序排号,第一开始报(13报),凡报到3的人退出圈子,问最后最后留下的是原来第号的那位. 提示:用数组完成 #include &lt;stdio.h&gt; int main() { int n; printf("...
  • js如何随机生成1~20之间5组随机数?每一组由5个数组成。如“1 3 5 7 9”:“2 4 6 8 10”:“11 13 15 17 19”:“12 14 16 18 20”:其中不能有重复的
  • 一道面试题有20个数组,每个数组有500个元素,升序排列,现在在这20*500个数中找出排名前500的数。转载请注明出处 http://blog.csdn.net/never_cxb/article/details/50210317方法思路分析笔者想到3中方法,水平有限...
  • 声明:1、本文内容为本人学习嵌入式linux所遇问题后,为方便以后学习...arm指令 立即(一) 2011-04-13 16:55 在ARM处理器的汇编语言中,对指令语法格式中的的常数表达式有这样的规定:“该常数必须对应8位位图
  • /*c语言实现,输入一个数,转为16进制输出*/ #include #include #define N 100 int convert (int n) { char a[N]; int i; for (i = 0; n; n /= 16) { int b = n % 16; if (b > 9) a[i++] =
  • 【编程笔记】求一个数的约数个数

    千次阅读 多人点赞 2018-02-23 21:15:04
    按照最简单的思考方法,是使用枚举法,将这个数除以小于这个数的所有正整数,如果没有余数,则为该数字的约数。这种线性方法虽然思考起来简单,但一旦要计算的数字特别大时,则会超时。还有一种较为简单的思考方式,...
  • 1.N个数中等概率抽取M个数 N个样本中等概率抽取M个样本(M&lt;N)是常见的需求。现在我们以一个数组来模拟样本,看看怎么实现这个算法。 最容易想到的方法,肯定就是直接等概率抽取。具体做法如下:每次都随机...
  • 森林结点数,边数与树个数的关系

    千次阅读 2017-05-20 12:22:18
    森林结点数,边数与树个数的关系 @(算法学习) 若森林F有15条边,25个结点。则F中包含树的个数是: A. 8 B. 9 C. 10 D. 11 分析:森林中树的个数与结点数的关系推导。 先看一般性的解决策略:根据一棵树的边数+...
  • 文章目录一、名词解释二、查看CPU信息参考文献未看完的参考文献 一、名词解释 **CPU(Central Processing ...物理cpu数量,在Linux上查看/proc/cpuinfo,其中的physical id就是每个物理CPU的id,有几个不同的physica...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 558,006
精华内容 223,202
关键字:

从16数到20数了几个数