【算法】程序猿不写代码是不对的51
来源:互联网 发布:淘宝自动发卡平台 编辑:程序博客网 时间:2024/06/06 11:36
package com.kingdz.algorithm.time201705;import java.util.Arrays;/** * 求级数之和 * * <pre> * 设有表达式S=1/1+1/2+1/3+1/4+...+1/n, * 现给定一个整数k,求s>k的最小n值 * 计算较大k值时需要保证精度,否则算出的数据是错误的 * 缺陷:算较大的k值时需要耗费的时间较长 * </pre> * * @author kingdz * */public class Algo09 {// 计算精度public static final int PRECISION = 15;public static void main(String[] args) {int k = 15;int n = calc(k);System.out.println("对于k为[" + k + "]时最小的n为[" + n + "]");}private static int calc(int k) {int[] add = new int[PRECISION];StringBuilder strb;int len = ("" + k).length();int n = 1;while (true) {int[] div = new int[PRECISION];int residue = 1;for (int i = len - 1; i < PRECISION; i++) {int divided = residue / n;int left = residue % n;div[i] = divided;if (left == 0) {break;} else {residue = left * 10;}}// System.out.println(Arrays.toString(div));for (int i = PRECISION - 1; i >= len - 1; i--) {int result = div[i] + add[i];add[i] = result % 10;if (i - 1 >= 0) {add[i - 1] += result / 10;}}System.out.println(Arrays.toString(add));strb = new StringBuilder();for (int i = 0; i < len; i++) {strb.append(add[i]);}long ret = Long.parseLong(strb.toString());if (ret >= k) {return n;}n++;}}}
0 0
- 【算法】程序猿不写代码是不对的51
- 【算法】程序猿不写代码是不对的1
- 【算法】程序猿不写代码是不对的2
- 【算法】程序猿不写代码是不对的3
- 【算法】程序猿不写代码是不对的4
- 【算法】程序猿不写代码是不对的5
- 【算法】程序猿不写代码是不对的6
- 【算法】程序猿不写代码是不对的7
- 【算法】程序猿不写代码是不对的8
- 【算法】程序猿不写代码是不对的9
- 【算法】程序猿不写代码是不对的10
- 【算法】程序猿不写代码是不对的11
- 【算法】程序猿不写代码是不对的12
- 【算法】程序猿不写代码是不对的13
- 【算法】程序猿不写代码是不对的14
- 【算法】程序猿不写代码是不对的15
- 【算法】程序猿不写代码是不对的16
- 【算法】程序猿不写代码是不对的17
- 虚幻UE4中Matinee基础:骨架网格教程
- 基于高度的纹理混合shader
- 东南大学 崇志宏:信息融合和安全综述
- amchart-条形统计图
- 为什么要坚持每天写学到的知识
- 【算法】程序猿不写代码是不对的51
- POJ 1071 Illusive Chase 笔记
- SpringMVC---Hello World(1)
- 我能成为创客吗?
- 并发用户数与 TPS 之间的关系
- QT作为跨平台UI开发库,何时创建平台相关的UI?
- windows下安装express框架
- mysqldump的single-transaction和master-data
- Java基础恶补——内存泄露、内存溢出