Coefficient Computation (大整数、Java解决)
Coefficient Computation UVALive8265
题意:计算组合数C(n,k)的值并将值按给定的进制输出。
思路:Java大整数类硬上。
PS:刚刚学完Java的大整数类,结果却被Java怎么开数组卡到吐血,直接后果就是少开一题,赛后学长指导后5分钟出题,真酸爽……
- 包:java.math.*
- BigInteger类实现了任意精度的整数运算。
- BigDecimal类实现了任意精度的浮点数运算。
- 读入大整数a:Scanner in = new Scanner(System.in); BigInteger a; a = in.nextBigInteger();
定义大整数类BigInteger a,b;
- 静态valueOf方法可以将普通的数值转换为大数值:BigInteger a = BigInteger.valueOf(100)
- 大整数的相加a = a.add(b);表达式为a =a+ b;
- 大整数的相减a = a.subtract(b);表达式为 a = a - b;
- 大整数的相乘a = a.multiply(b);表达式为 a = a * b;
- 大整数的相除a = a.divide(b);表达式为 a = a / b;
- 大整数的取余a = a.mod(b);表达式为 a = a % b;
- 大整数的比较a.compareTo(b);如果a与b相等则返回0,如果a大于b返回正数,如果a小于b返回 负数;
- a.valueOf(100);返回值为100的大整数;
- 将字符串转换成10进制大整数类型:String s = "100000000000000000000000000000000" ,BigInteger c = new BigInteger(s,10)
- 其他操作:a.pow(b) = a^b;a.gcd(b) = a和b的最大公约数;a.abs() = a的绝对值;a.negate() = a的取反数;max(),min();
- System.out.println(a.toString(d));将大整数a按d进制输出;
大实数类的运算(实现方法与大整数一样):
- BigDecimal add(BigDecimal other)相加
- BigDecimal subtract(BigDecimal other)相减
- BigDecimal multiply(BigDecimal other)相乘
- BigDecimal divide(BigDecimal other RoundingMode mode) 5.0 相除,必须给出舍入方式RoundingMode.HALF_UP是在学校学习的四舍五入方式
- BigDecimal compareTo(BigDecimal other)比较返回值和大整数一样,见上边
- static BigDecimal valueOf( long x) 返回值为x的大实数
- static BigDecimal valueOf(long x,int scale)返回值为x / 10的scale次方的大实数
好了上代码:
import java.math.*;
import java.util.*; public class Main
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n,k,d,t;
t = in.nextInt();
for(int o = ; o < t; o++)
{
n = in.nextInt();
k = in.nextInt();
d = in.nextInt();
if(n == || k == )
System.out.println();
else
{
BigInteger big = BigInteger.valueOf(n);
for(int i = n-; i >= n-k+; i--)
{
big = big.multiply(BigInteger.valueOf(i));
}
BigInteger lit = BigInteger.valueOf(k);
for(int i = k-; i > ; i--)
{
lit = lit.multiply(BigInteger.valueOf(i));
}
BigInteger ans = big.divide(lit);
BigInteger[] temp = new BigInteger[];//!!!!!!!!!!!!!!!!!!!!!!!!!开数组
BigInteger dd = BigInteger.valueOf(d);
int index = ;
while(true)
{
if(ans.compareTo(BigInteger.valueOf()) == ) break;
temp[index++] = ans.mod(dd);
ans = ans.divide(dd);
}
for(int i = index-; i>=; i--)
System.out.print(temp[i]);
System.out.println();
}
}
}
}
大整数类也是一个封装好的类,所以可以开数组,但要注意开数组的格式。
Coefficient Computation (大整数、Java解决)的更多相关文章
- 算法笔记_159:算法提高 第二大整数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束.然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来 ...
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4856 Solved: 983[Submit][Status ...
- java 常用类库:BigInteger大整数;BigDecimal大小数(解决double精度损失);
大整数BigInteger package com.zmd.common_class_libraries; import java.math.BigInteger; /** * @ClassName ...
- 【Java编程】Java中的大整数计算
在上一篇文章中,我们实现了c语言中的大整数的运算,并且用Miller-Rabin算法实现了对大素数的测试.本来我准备用Java代码实现大整数的运算,查了一下资料发现Java中java.math的Big ...
- 大整数相乘问题总结以及Java实现
最近在跟coursera上斯坦福大学的算法专项课,其中开篇提到了两个整数相乘的问题,其中最简单的方法就是模拟我们小学的整数乘法,可想而知这不是比较好的算法,这门课可以说非常棒,带领我们不断探索更优的算 ...
- Java开发笔记(二十九)大整数BigInteger
早期的编程语言为了节约计算机的内存,给数字变量定义了各种存储规格的数值类型,比如字节型byte只占用一个字节大小,短整型short占用两个字节大小,整型int占用四个字节大小,长整型long占用八个字 ...
- suseoj 1207: 大整数的乘法(java, 大数相乘, C/C++, 大数相乘)
1207: 大整数的乘法 时间限制: 1 Sec 内存限制: 128 MB提交: 7 解决: 2[提交][状态][讨论版][命题人:liyuansong] 题目描述 求两个不超过200位的非负整数 ...
- 自己动手写Java大整数《3》除法和十进制转换
之前已经完毕了大整数的表示.绝对值的比較大小.取负值.加减法运算以及乘法运算. 详细见前两篇博客(自己动手写Java * ). 这里加入除法运算. 另外看到作者Pauls Gedanken在blog( ...
- 【老鸟学算法】大整数乘法——算法思想及java实现
算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...
随机推荐
- swift 2.0 语法 分支
import UIKit // 注意: Swift中可以不写;号, 但是有一定的前提条件, 一行只有一句代码 // 如果一行有多句代码, 那么;还是必须写 // 注意: Swift变态的地方 ...
- 数学之路-python计算实战(1)-ubuntu安装pypy
Get the source code. The following packages contain the source at the same revision as the above bin ...
- NYOJ 330 一个简单的数学题【数学题】
/* 题目大意:求解1/n; 解题思路:写一个输出小数的算法 关键点:怎样处理小数点循环输出 解题人:lingnichong 解题时间:2014-10-18 09:04:22 解题体会:输出小数的算法 ...
- HDU2082 找单词 【母函数】
找单词 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path.之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开 ...
- 我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.【转】
本文转载自:http://blog.csdn.net/ouyang_peng/article/details/48048975 今天在调用MediaRecorder.stop(),报错了,java.l ...
- 分享tiny4412,emmc烧录u-boot, 支持fastboot模式烧写emmc【转】
本文转载自:http://www.arm9home.net/read.php?tid-80810.html 分享tiny4412,emmc烧录u-boot, 支持fastboot模式烧写emmc ...
- 51nod 1611 金牌赛事
被亮亮D飞啦!!QWQ 这题明明是最大权闭合子图+线段树优化构图好不好 被迫考虑DP,并且考虑f[i]表示到第i个位置的最大值(第i个位置可选可不选) 对于最终的答案,我们可以分割成一段一段的,也就是 ...
- RESTful设计原则和样例(开发前后台接口)
摘要 REST(表征性状态传输)设计风格;REST通常基于使用HTTP,URI协议和标准.使用URL标识资源,开发前后台接口.主要使用post,get方式 参考博文: http://www.cnblo ...
- bzoj2427 [HAOI2010]软件安装——缩点+树形DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2427 今天的考试题...好不容易一次写对了树形DP,却没发现有环的情况... 发现自己 ta ...