网易笔试题:最大的奇约数
来源:互联网 发布:超声影像工作站软件 编辑:程序博客网 时间:2024/05/07 16:41
小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.
现在给出一个N,需要求出 f(1) + f(2) + f(3)…….f(N)
例如: N = 7
f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 + 7 = 21
小易计算这个问题遇到了困难,需要你来设计一个算法帮助他。
输入描述:
输入一个整数N (1 ≤ N ≤ 1000000000)
输出描述:
输出一个整数,即为f(1) + f(2) + f(3)…….f(N)
输入例子:
7
输出例子:
21
package com.suda.alex;import java.util.Scanner;public class Test6 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); System.out.println(sumOfMaxOdd(n)); } } /* * 奇数的最大约数就是本身。问题就是求所有f(i), i为偶数的和 因为要求的是最大奇约数,所以f(2k) = f(k),所以f(2) + f(4) * + ... + f(2k) = f(1) + f(2) + ... + f(k); * * sum(n) = sum (n / 2) + 1 + 3 + ... + n - 1 = sum (n/2) + n*n/4(n 为偶数) * * = sum (n - 1) + n (n为奇数) * * */ public static long sumOfMaxOdd(long n) { if (n == 1) { return 1; } if (n % 2 == 0) { return sumOfMaxOdd(n / 2) + n * n / 4; } else { return sumOfMaxOdd(n - 1) + n; } }}
1 0
- 网易笔试题:最大的奇约数
- 网易笔试题:最大的奇约数
- 网易笔试题--最大奇约数
- 网易2017校园招聘笔试题 最大的奇约数
- 【Python】 网易笔试编程题( 最大的奇约数)
- 最大的奇约数(网易笔试题)
- 网易编程题--最大的奇约数
- 网易2017年校招笔试题--最大奇约数
- 网易 最大奇约数
- 网易真题之最大奇约数
- 网易校招2017笔试题-求最大奇约数和
- 最大的奇约数
- 最大的奇约数
- 最大的奇约数
- 最大的奇约数
- 最大的奇约数
- 网易秋招编程题——最大的奇约数
- 网易编程题六,最大的奇约数(递推计算)
- Adobe一系列软件快速切换语言(mac osx)
- C/C++内存管理详解
- 51nod 四级算法 4/74 P1051 最大子矩阵
- Python实现第一个神经网络
- VB2010连接 三种数据库 源代码
- 网易笔试题:最大的奇约数
- 数据库中关于preparedStatement和Statement分析
- Android入门六(Handler)
- String、StringBuffer、StringBuilder到底有什么区别?
- 以此来记录我的生活
- 循迹小车
- Java读写文件之中文乱码(上)
- Android的五种数据存储
- 买票找零问题——卡特兰数的应用