题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); double sum = 0; if (num%2!=0) { for (int i = 1; i <= num; i=i+2) { sum += 1.0/i; System.out.print(1+"/"…
题目:求0—7 所能组成的奇数个数. 算法思想:这个问题其实是一个排列组合的问题,设这个数为sun=a1a2a3a4a5a6a7a8,a1-a8表示这个数的某位的数值,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字.如果最后一位数为偶数,则这个数一定为偶数.a1-a8可以取0-7这个八个数字,首位数字不为0.从该数为一位数到该数为8位数开始统计奇数的个数:1.当只有一位数时也就是该数的最后一位,奇数个数为42.当该数为两位数时,奇数个数为4*7=283.当该数为三位数时…
package erase; public class 求0到7所能组成的奇数个数 { public static void main(String[] args) { /* * 求0—7所能组成的奇数个数 * 分析:在0-7中组成的数0不能开头所以数为一位数时奇数有1,3,5,7 * 二位数时奇数有4*7 * 三位数一直到8位数是前面奇数个数*8 */ //0到7有8个数,但是最高位是7位,0不能放在开头 int count = 0,sum = 0; for(int i=1;i<9;i++)…
1 /*43 [程序 43 求奇数个数] 2 题目:求 0-7 所能组成的奇数个数. 3 */ 4 5 /*分析 6 * 1.0不能作最高位且最低位只能是1,3,5,7; 7 * 2.没有限定是几位数,可以是一位,两位...七位 8 * 3.数字应该不能重复出现.否者有无数个 9 * */ 10 11 package homework; 12 13 public class _43 { 14 15 public static void main(String[] args) { 16 // 声明…
/** *Created by xuzili at 22:12 on 2018/4/4 */ // 以上注释使用了IntelliJ Idea的File-Settings-Editor-Live Templates-User(Self)提供的/*a+tab键(自定义功能) import java.util.*; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in)…
题目:用户能输入一个整数,输入后返回是偶数还是奇数. 偶数规则:除以2能整除的数称之为偶数,否则是奇数 实例: switch版 import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("请输入一个整数"); int num = in.nextInt(); int…
Sigma Function Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1336 Description Sigma function is an interesting function in Number Theory. It is denoted by the Greek letter Sigma (σ). This fu…
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复杂度为O(n). 求最长回文子串这个问题,我听说有个分治+拓展kmp的算法,后缀数组也可以. 但是对于求回文串来说,manacher算法肯定有很多其他算法没有的优点. 现在进入正题: 首先,在字符串s中,用rad[i]表示第i个字符的回文半径,即rad[i]尽可能大,且满足: s[i-rad[i],…
for循环语句格式: ;;/*循环条件*/i++/*状态改变*/) { //循环体,执行代码:(break;跳出循环体) } for 穷举法用循环把各种可能的情况都走一遍,然后用if条件把满足要求的结果给筛选出来. for 迭代法 有一定规律,从初始情况按照规律不断求解中间情况,最终推导出结果. 1求几个数的和 Console.WriteLine("请输入一个数:"); int a = Convert.ToInt32(Console.ReadLine()); ; ; i <= a…
如题,最后一位数好求,他只和最后一位相乘后的最后一位有关,唯一影响我们得是末尾0,而阶乘中末尾0来自于2和5,(10得话可以看成2 * 5),所以有这个思想我们可以筛选出1 * 2 * 3 * .... * n中包含2和5得个数 如下: int get2(int n) { if(n == 0)return 0; return n / 2 + get2(n / 2); } int get5(int n) { if(n == 0)return 0; return n / 5 + get5(n / 5…