sgu 154 二分 + 数学方法 sgu 111 二分 + 高精度 (Java)
2011-10-01 10:29
513 查看
/* * sgu154.c * * Created on: 2011-10-1 * Author: bjfuwangzhu */ #include<stdio.h> #define nnum 5 #define nmax 0x7fffffff int getNum(int n) { int res; res = 0; while (n) { res += n / nnum; n /= nnum; } return res; } void solve(int n) { int left, right, mid, temp; left = 0, right = nmax; while (left <= right) { mid = (left + right) >> 1; temp = getNum(mid); if (temp >= n) { right = mid - 1; } else { left = mid + 1; } } if (getNum(left) == n) { printf("%d\n", left); return; } puts("No solution"); } int main() { #ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); #endif int n; while (~scanf("%d", &n)) { if (n == 0) { puts("1"); continue; } solve(n); } return 0; }
import java.io.BufferedInputStream; import java.math.BigInteger; import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); BigInteger num, left, right, mid, two = BigInteger.valueOf(2), one = BigInteger.ONE; while (cin.hasNext()) { num = cin.nextBigInteger(); left = BigInteger.ZERO; right = num.abs().add(one); while (left.compareTo(right) <= 0) { mid = left.add(right).divide(two); if (mid.multiply(mid).compareTo(num) >= 0) { right = mid.subtract(one); } else { left = mid.add(one); } } while (left.multiply(left).compareTo(num) > 0) { left = left.subtract(one); } System.out.println(left); } } }
相关文章推荐
- SGU 111 Very simple problem(高精度+二分)
- SGU 154 Factorial(数论+二分)
- 数学计数原理(Pólya,高精度):SGU 294 He's Circles
- JAVA高精度数值运算方法,小数点后保留位数,结合相关例题进行介绍!
- java中math类方法之数学运算(pow,exp,三角函数,指数)
- JAVA常用数学类方法
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- poj 1730 java+数学方法
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- 除了Java之外你需要知道的事情1 ——通过equals方法讲讲离散数学
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- java学习小记 高精度的相关方法
- Java 查找方法(普通查找,二分查找)
- poj 1905 Expanding Rods (数学 计算方法 二分)
- SGU 111 Very simple problem(高精度)
- sgu111高精度开方
- java 调用js 方法库进行简单的数学表达式的运算
- sgu-111-111. Very simple problem(java大数)
- BigDecimal 使用方法详解(Java高精度计算)