精华内容
下载资源
问答
  • 题目一个只有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]);
        }
    

    展开全文
  • 1100共100个数, 1开始, 每隔1, 2, 3, 4 ... 个数拿走一个数, 一直循环, 最后剩下? 就是说, 一开始把 1 拿走, 隔1个数(2), 把3拿走, 再隔2个数(4, 5), 把6拿走, 再隔3个数(7, 8, 9)把10拿走. 数100之后再...
  • js所给数字中随机选几个数

    千次阅读 2018-06-26 09:37:27
    例: 0~9十个数字中随机选出5个数 var arr = [0,1,2,3,4,5,6,7,8,9]; var out = []; var num = 5; while(out.length &lt; num){ var temp = (Math.random()*arr.length) &gt;&gt; 0; ...

    例:  从0~9十个数字中随机选出5个数

        var arr = [0,1,2,3,4,5,6,7,8,9];
    		    var out = [];
    		    var num = 5;
    		while(out.length < num){
    		     var temp = (Math.random()*arr.length) >> 0;
    		     out.push(arr.splice(temp,1));
    		 }
     alert(out)

     如上代码:

              声明 数组out来接收选出的5个数字

              num=5;指定循环5次.

         Math.random()  随机生成0~1的随机数,  乘以 arr.length--10;即可生成 0 ~ 9 的随机数. 注意,目前还不一定为整数,

              再把每次生成的数push到 out数组中,因为我们要的是整数,所以 arr.splice(temp,1)截取他的整数位.

    展开全文
  • 1.统计字符串字母个数(并且保持字母顺序)比如: aabbbbbbbba喔喔bcab cdabc deaaa目前我做知道的5种方式,如果你还有更好的,欢迎赐教要求:统计字符串的字符个数,最好按顺序输出每个字符的个数//方式1 public ...

    1.统计字符串字母个数(并且保持字母顺序)

    比如: aabbbbbbbba喔喔bcab  cdabc  deaaa

    目前我做知道的有5种方式,如果你还有更好的,欢迎赐教

    要求:统计字符串的字符个数,最好按顺序输出每个字符的个数

    //方式1
        public static void letterCount1(String s) {
        	s=s.replaceAll(" +", "");
    	     //1,转换成字符数组
    	    char c[]=s.toCharArray();
    	   
    	    Map<Character, Integer> tree=new TreeMap<Character, Integer>();
    	    for (int i = 0; i < c.length; i++) {
    		//第一次:a,1
    		//第二次:a,2  
    	     //2,获取键所对应的值
    		Integer value=tree.get(c[i]);
    	     //3,存储判断
    		tree.put(c[i], value==null? 1:value+1);
    	    }
    	    System.out.println(tree);
    	
    	}
         
        //方式2  使用流
        //这个在测试特殊字符,比如\    \n时,他的顺序会不对,这个是Map造成的
        //解决办法使用TreeMap
        public static void letterCount2(String s) {
        	s=s.replaceAll(" +", "");
        	TreeMap<String, Long> result = Arrays.stream(s.split(""))
            		                .sorted()
    //                              .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
                                    .collect(Collectors.groupingBy(Function.identity(),TreeMap::new,Collectors.counting()));
            System.out.println(result);
        	
        }
        //或者
    	public static void letterCount2_1(String s) throws Exception {
    		s=s.replaceAll(" +", "");
    		Stream<String> words = Arrays.stream(s.split(""));
    		Map<String, Integer> wordsCount = words.collect(Collectors.toMap(k -> k, v -> 1,
    		                                                      (i, j) -> i + j));
    		System.out.println(wordsCount);
    	}
        
        //方式3 使用Collections.frequency
        //其实就是字符串变成集合存每个字串,把每个字串循环跟集合比较
        public static void letterCount3(String s) {
        	s=s.replaceAll(" +", "");
        	List<String> list=Arrays.asList(s.split(""));
        	Map<String,Integer> map=new TreeMap<String, Integer>();
        	for (String str : list) {
        		map.put(str, Collections.frequency(list, str));
    		}
        	System.out.println(map);
        }
        
        //方式4
        public static void letterCount4(String s) {
        	s=s.replaceAll(" +", "");
        	String[] strs = s.split("");
        	Map<String,Integer> map=new TreeMap<String, Integer>();
        	for (String str : strs) {
        		map.put(str, stringCount(s, str));
    		}
        	System.out.println(map);
        }
        
        
        //方式5
        public static void letterCount5(String s) {
        	s=s.replaceAll(" +", "");
        	String[] strs = s.split("");
        	Map<String,Integer> map=new TreeMap<String, Integer>();
        	for (String str : strs) {
        		map.put(str, stringCount2(s, str));
    		}
        	System.out.println(map);
        }
        
        
        
        //巧用split
      	public static int stringCount(String maxstr, String substr) {
    		// 注意
    		// 1.比如qqqq,没有找到,则直接返回这个字符串
    		// 2.比如qqqjava,末尾没有其他字符,这时也不会分割,所以可以添加一个空格
    		// 3.java11开头没有字符,没有关系,自动空填充
    		// 4.对于特殊字符,要注意使用转义符
    		int count = (maxstr + " ").split(substr).length - 1;
    		// System.out.println("\"" + minstr + "\"" + "字符串出现次数:" + count);
    		return count;
    	}
    
        //如果要不区分大小写,则compile(minstr,CASE_INSENSITIVE)
    	public static int stringCount2(String maxstr, String substr) {
    		int count = 0;
    		Matcher m = Pattern.compile(substr).matcher(maxstr);
    		while (m.find()) {
    			count++;
    		}
            return count;
    	}

    2.统计字符串的单词个数

    这个其实跟上面一样的,下面只写一个简洁的方法

     public static void wordStringCount(String s) {
        	//这里开始是字符串,分割后变成字符串流
            Map<String, Long> result = Arrays.stream(s.split("\\s+"))
            		                          .map(word -> word.replaceAll("[^a-zA-Z]", ""))
                                                   .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
            System.out.println(result);
        	
        }

    3.统计文本单词个数

     //统计一个文本中单词的个数
        public static void wordFileCount(String path) throws IOException{
        	//这里一开始字符串流
        	//先分割
        	//在变成字符流
        	//在筛选
        	 Map<String, Long> result = Files.lines(Paths.get(path),Charset.defaultCharset())
        			                 .parallel()
    					  //字符串流--分割--字符串流
    					 .flatMap(str->Arrays.stream(str.split(" +"))) 
    					 .map(word -> word.replaceAll("[^a-zA-Z]", ""))
    					//去掉空
    					 .filter(word->word.length()>0) 
    				 .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
        	System.out.println(result);
        }
     //优化:更精确的是根据非单词来分组
        public static void wordFileCount0(String path) throws IOException{
        	Map<String, Long> result = Files.lines(Paths.get(path),Charset.defaultCharset())
        			.parallel()
        			//字符串流--分割--字符串流
        			.flatMap(str->Arrays.stream(str.split("[^a-zA-Z]+"))) 
        			//去掉\n
        			.filter(word->word.length()>0) 
        			.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
        	System.out.println(result);
        }


    展开全文
  • /* 2017年3月3日14:47:12 java基础50道经典练习题 例8 Athor: ZJY ... 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加键盘控制。 程序分析:关键是计算出每一项的值。 */ import java.util.S
    /*
    	2017年3月3日14:47:12
    	java基础50道经典练习题 例8
    	Athor: ZJY
    	Purpose: 求和
     【程序8】
    	题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
    	例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 
    	程序分析:关键是计算出每一项的值。
    */
    import java.util.Scanner;
    
    public class ProgramNo8_1
    {
    	public static void main(String[] args)
    	{
    		System.out.print("求s = a+aa+aaa+...的值,请输入a和最大项a的个数的值: ");
    		// \\s*正则表达式,表示所有空格 确切说应该是空白字符 加*会造成只能输入一位数有效
    		Scanner sc = new Scanner(System.in).useDelimiter("\\s"); 
    		//Scanner sc = new Scanner(System.in);//.useDelimiter("\\s*"); 
    		long number = sc.nextInt();
    		int count = sc.nextInt();
    		sc.close();
    		
    		summation(number, count);
    	}
    	private static void summation(long a, int count) {
    		long sum = 0;
    		//System.out.println("a= " + a + ", " + "count=" + count);
    		for(int i=1; i<=count; i++) {
    			sum += number(a, i);
    			System.out.print(number(a, i));
    			if(i != count) {
    				System.out.print("+");
    			}
    		}
    		System.out.println(" = " + sum);		
    	}
    	private static long number(long a, int count) {
    		long value = 0;
    		if(1 == count)
    			value =  a;
    		else
    			value = (number(a, count-1)*10 + a);
    		//System.out.println(value);		
    		return value;
    	}
    }
    
    /*
    	2017年3月3日15:26:57
    	java基础50道经典练习题 例8
    	Athor: ZJY
    	Purpose: 求和
    */
    import java.util.Scanner;
    
    public class ProgramNo8_2
    {
    	public static void main(String[] args)
    	{
    		/* \\s*正则表达式,表示所有空格 确切说应该是空白字符 加*会造成只能输入一位数有效 */
    		Scanner sc = new Scanner(System.in).useDelimiter("\\s");  
    		long number = sc.nextInt();
    		int count = sc.nextInt();
    		sc.close();
    		System.out.println(expression(number, count) + add(number, count));
    		
    	}
    	//求表达式
    	private static String expression(long a, int n) {
    		StringBuffer sb = new StringBuffer();
    		StringBuffer subSB = new StringBuffer();
    
    		for (int i=1; i<n+1; i++) {
    			subSB = subSB.append (a);
    			sb = sb.append (subSB);
    			if(i < n)
    				sb = sb.append("+");
    		}
    		sb.append (" = ");
    		
    		return sb.toString();
    	}
    	//求和
    	private static long add(long a, int n) {
    		long sum = 0;
    		long subSUM = 0;
    		for (int i=1; i<n+1; i++) {
    			subSUM = subSUM*10 + a;
    			sum = sum + subSUM;
    			//System.out.println(sum + ", " + subSUM);
    		}
    		return sum;
    	}
    }
    

    /*
    	2017年3月3日15:26:57
    	java基础50道经典练习题 例8
    	Athor: ZJY
    	Purpose: 求和
    */
    import java.util.Scanner;
    
    public class ProgramNo8_2
    {
    	public static void main(String[] args)
    	{
    		/* \\s*正则表达式,表示所有空格 确切说应该是空白字符 加*会造成只能输入一位数有效 */
    		Scanner sc = new Scanner(System.in).useDelimiter("\\s");  
    		long number = sc.nextInt();
    		int count = sc.nextInt();
    		sc.close();
    		System.out.println(expression(number, count) + add(number, count));
    		
    	}
    	//求表达式
    	private static String expression(long a, int n) {
    		StringBuffer sb = new StringBuffer();
    		StringBuffer subSB = new StringBuffer();
    
    		for (int i=1; i<n+1; i++) {
    			subSB = subSB.append (a);
    			sb = sb.append (subSB);
    			if(i < n)
    				sb = sb.append("+");
    		}
    		sb.append (" = ");
    		
    		return sb.toString();
    	}
    	//求和
    	private static long add(long a, int n) {
    		long sum = 0;
    		long subSUM = 0;
    		for (int i=1; i<n+1; i++) {
    			subSUM = subSUM*10 + a;
    			sum = sum + subSUM;
    			//System.out.println(sum + ", " + subSUM);
    		}
    		return sum;
    	}
    }
    
    


    展开全文
  • python实现整数分为几个数的和 问题重述: 如何实现整数分为几个数的和,可以理解为一个整数的分箱问题 简单叙述解题思路: 比如:4这个整数,最多分为4个箱(1,1,1,1);最少一个箱(4) 所以我们定义一个长度为四...
  • 15个数按从小大顺序存放在一个数组中,输入一个数,输出一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。 #include <stdio.h> #include <stdlib.h>...
  • Pandas 关于统计个数几个总结

    万次阅读 2018-12-16 11:36:47
    我们都知道 df.value_counts()是统计个数的小能手。那么怎么更熟练地运用起来呢? 以下是自己总结地种场景: &gt;&gt;&gt;&gt;&gt;df 0 美国 1 中国大陆 香港 2 法国 3 美国 4 意大利 5 ....
  • /*15个数按由大小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中 第几个元素的值。如果该数不在数组中,则输出“无此数”。*/ #include <stdio.h> int main() { int a[15]; int...
  • 习题 5.8 15个数按由大小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。 代码块: #include &lt;iostream&gt; ...
  • 卡特兰的应用,你知道几个

    千次阅读 2015-03-27 15:47:34
    卡特兰递推公式 ...假设不满足条件的序列个数为,那么就。而对于不满足的序列,必然存在某一个奇数位使,而且+1的个数恰好比-1的个数少一个,此时我们将前k项中的+1变为-1,将-1变为+1,那么就得到一个(n+1)
  • utf-8 中的一个汉字占几个字节

    万次阅读 2018-12-05 14:32:04
    utf-8 中的一个汉字占几个字节 占 2 个字节的:〇 占 3 个字节的:基本等同于 GBK,含 21000 多个汉字 占 4 个字节的:中日韩超大字符集里面的汉字, 5 万多个 1 个 utf8 数字占 1 个字节 1 个 utf8 英文字母占 1 ...
  • 思路一:排序法, 对n个数排序,然后迭代前k个数即可,时间复杂度以 快排为准 是O(nlogn),代码略   思路二:局部替换法 假设前k个数就是整个数组中最小的,找出最大的数和k+1比较,如果比k+1大就和K=1互换位置,然后再...
  • java 判断一个数能被几个9整除

    千次阅读 2017-07-07 11:58:21
    判断一个数能被几个9整除 代码: import java.util.Scanner; public class Prog45{ public static void main(String[] args){ System.out.print("请输入一个数:"); Scanner scan = new Scanner(System.in);
  • 题目:将一个数分成几个不同的数之和,满足这些数的乘积最大。  刚开始,没有看清“不同”两个字,发现一个数被分成两个数的两个积满足最大,则两个数的差一定要最小。即两种情况:  (1)奇数(2*n+1):则可以...
  • 给出一不多于5位的整数,要求 1、求出它是 2、分别输出每一位数字 3、按逆序输出各位数字,例如原为321,应输出123。 将下面的程序填写完整。 #include &amp;lt;stdio.h&amp;gt; int main() { ...
  • bool is_sqrt(long long n) { int m = sqrt(n); if (m*m == n) return true;... if (n % 8 == 7) return 4; for (int i = 0; i*i ; i++) { if (is_sqrt(n - i*i)) return 2; } return 3; }
  • 问题描述:输入两个整数n和m,数列1,2.......n中随意取几个数,使其和等于m,要求将其中所有的可能组合列出来。   思路:这个问题其实背包问题的变形,本文给出两种解法。   解法一:用递归,效率...
  • 位dp总结 之 入门模板

    万次阅读 多人点赞 2016-08-03 14:37:59
    for(int i=le;i;i++) if(right(i)) ans++; 基础篇 ...数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦! 之所以要引入数位的概念完全就是为了dp。
  • 例:数组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}
  • UTF-8编码占几个字节?

    万次阅读 2019-01-29 16:18:00
    2个字节的:带附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二字节编码 占3字节的:基本等同于GBK,含21000多汉字 占4字节的:中日韩超大字符集...
  • 第一个人开始报13报),凡报到3的人退出圈子,问最后留下的是原来第 号的那位。 解决思路: 我的解决思路是先给这n个人排序生成代表他们身份标记的列表,对列表进行循环迭代,找出每次列表中要退出圈子...
  • // 取出一随机数 int r = (int) (Math.random() * n); results[i] = numbers[r]; // 排除已经取过的值 numbers[r] = numbers[n - 1]; n--; } Arrays.sort(results); for (int i : ...
  • Java基本类型占用的字节: 1字节: byte , boolean 2字节: short , char 4字节: int , float 8字节: long , double 注:1字节(byte)=8位(bits) 附录: 1.编码与中文: Unicode/GBK: 中文2字节 ...
  • 关于ARMv8指令的几个问题

    千次阅读 2014-05-29 11:48:39
    问题一:ARMv8 branch指令格式及用法(《ARMv8 ISA overview》中 page 25相关...问题三:ARMv8有没有两目的操作的指令? 问题四:ARMv8中源操作超过三的指令及分类: 问题五:branch指令向前向后跳转的区别
  • 求一个数位数

    千次阅读 2013-08-28 23:26:38
    在看《数据结构与算法分析》的基数排序时,用到了数字是位数,最开始我是直接用字符串来计算的,后来想了想,还是网上找了找答案,把答案的列出的...//求一个数位数 //a = 999999999 //N = 100000000 //time1 =
  • 一、简单版(只实现这两需求) ...#len函数可以查看字符串的长度,也就是能得出这是一个几,用str转换成字符串之后才能跟前后文字拼接 print('我把它倒过来给你看看:',''.join(list(reversed(nu...
  • 问题:A从2到99之间抽了2个数字,把和告诉B,积告诉CB说我不知道这2个数,但是C也肯定不知道C说我开始确实不知道,但是现在知道了B说这样我也知道了求这2个数.为什么? 我的解答:首先,正确答案是4和13。设B得到的和记...
  • 三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数 样例输入 12345 样例输出 5 1 2 3 4 5 54321 提示 哈姆雷特:数字还是字符?这是一个问题!...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,593,045
精华内容 637,218
关键字:

从2数到8有几个数