poj 1001 java大数类

poj1001(java 大数处理) 求高精度幂 Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 169050   Accepted: 40932 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一 阅读详情

今天在地大邀请赛中,A题是大数题,java大数类不会用,c++大数模板写的不熟练,就懒得写,结果,只得了三等奖。。。

今天恶补下:

import java.math.BigDecimal;
import java.util.Scanner;
import java.math.BigInteger;
public class Math {

	/**
	 * @param args
	 */
	private static final int  DEFAULT_DIV_SCALE = 10;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	/*while(true)
	{
		Scanner input = new Scanner(System.in);
		int num = input.nextInt();
		System.out.println(num);	 
	}*/
		//BigInteger x = new BigInteger(44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444111");
	//	BigInteger y = new BigInteger ("-555555555555555555555555555555555555555555");
		int m = 1233;
		BigInteger x = new BigInteger("12422333332222222222223443211");
		BigInteger y = new BigInteger ("12");
		BigInteger k = new BigInteger("e",16);
        System.out.println(k);
		System.out.println(x.add(y));
		System.out.println(y.abs());
	    System.out.println(y.compareTo(x));
	    BigInteger n = x.divide(y.abs());
		System.out.println(n);
		System.out.println(n.multiply(y.abs()));
		System.out.println(y.gcd(x));
		System.out.println(x.gcd(y));
		System.out.println(x.subtract(y));
		System.out.println(x.pow(m));
		/*System.out.print("输入数据:\n");
		System.out.println("输入数据:");
		Scanner  input = new Scanner(System.in);
		float num = input.nextFloat();
		System.out.println(num);*/
		System.out.println("大数求余:");
		System.out.println(x.mod(y));
		BigDecimal a = new BigDecimal("11111111.213211");
		System.out.println("a="+a);
		/*BigInteger b = new BigInteger ("11111111.213211");*/
		BigInteger b = new BigInteger ("11111111");
		System.out.println("b="+b);
		BigDecimal c = new BigDecimal("12222.121");
		System.out.println("c=="+c);
		System.out.println("a+c="+a.add(c));
	}
	
	
	
	}


题目链接:http://poj.org/problem?id=1001

第一次写java代码,交了一次没过,桑心。。。要做Codeforces了,有空补上

poj100题,留图纪念、、、、、、、、、、、、


记得,poj提交java类名都要换成Main的啊

import java.math.BigInteger;
import java.math.BigDecimal;
import java.util.Scanner;
import java.io.*;  //不知道这些包导入的对不?
public class Exponentiation {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		/*读入:
		 * 用Scanner 类定义的对象进行控制台读入,Scanner类在java.util.*包中
		 * Scanner input = new Scanner(System.in);
		 * int n = input.nextInt();
		 * BigInteger nn = input.nextBigInteger();
		 * ......................................
		 */
		while (input.hasNext())   //等同于!= EOF
		{
			int n;
			BigDecimal a = input.nextBigDecimal(); //读入一个BigDecimal
			n = input.nextInt();
			a = a.pow(n);  // 返回其值为 (thisn) 的 BigDecimal,准确计算该幂,使其具有无限精度。
			//pow(int n, MathContext mc)   返回其值为 (thisn) 的 BigDecimal。
			a = a.stripTrailingZeros();
			/*public BigDecimal stripTrailingZeros  (strip 脱去剥夺,trailing(拖尾,后面的))
			 * 返回数值上等于此小数,但表示形式溢出所有尾部0的BigDecimal
			 * 1.22222300000   用过之后为1.222223 类型还是BigDeciaml类型
			 */
			String str = a.toPlainString();
			/*
			 * 注意toPlainString()和toString()的区别
			 * 对于:BigDecimal s; s = (0.4321^20)
			 * String str = s.toPlainString();
			 * System.out.println(str);
			 * 输出:0.0000000514855464107。。。。。01
			 * 
			 *若String str = s.toString();
			 *输出为: 5.14855464107。。。。01E-8
			 */
			if (str.startsWith("0.")) //以什么开始
			{
				str = str.substring(1);
				/*substring是java中截取字符串的一个方法
				 * 有两种传参方式
				 * 一种是:public String substring(int deginindex)
				 * 返回一个新的字符串,它是此字符串的一个子串,该字串从指定索引处的字符开始直到字符串末尾
				 * 另一种是public String substring(int deginindex,int endindex)
				 * 返回一个新字符串,也是它的一个子串。该字串从beginindex处开始
				 * 直到索引到endindex-1处的字符。因此该字符串的长度为endindex-beginindex
				 * 
				 * 
				 * substr
				 * 该方法用于返回一个从指定位置开始的指定长度的子字符串
				 *substr(start,length);
				 */
			}
			System.out.println(str);
		}
	}
	}

java提交果然慢,100多ms

很好很好的资源:http://man.ddvip.com/program/java_api_zh/java/math/BigDecimal.html#stripTrailingZeros()

http://www.chineselinuxuniversity.net/articles/50293.shtml

http://wenku.baidu.com/view/9463cec7aa00b52acfc7caa8.html


坚持啊啊啊

北京大学POJ 1001-1009算法题解完整C++实现 ACM国际大学生程序设计竞赛(ACM-ICPC)以高强度算法思维和编程实现能力为核心,每支三人队伍需在5小时内解决8–13道复杂问题。评判采用“实时反馈+罚时机制”,提交代码通过所有测试用例方可得分,错误次数计入总耗时。POJ 1001~1009作为入门经典,涵盖高精度幂运算(1001)、模拟计算(1002)、数学建模(1006)等典型题型。其数据规模有限但边界条件严苛,旨在训练选手对输入输出格式、浮点精度控制及异常处理的敏感性。 阅读详情

相关推荐

poj1001高精度乘法

Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems. This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25. 输入说明 The input will consist of a set of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9. 输出说明 The output will consist of one line for each line of input giving the exact value of R^n. Leading zeros should be suppressed in the output. Insignificant trailing zeros must not be printed. Don't print the decimal point if the result is an integer. 输入样例 95.123 12 0.4321 20 5.1234 15 6.7592 9 98.999 10 1.0100 12 输出样例 548815620517731830194541.899025343415715973535967221869852721 .00000005148554641076956121994511276767154838481760200726351203835429763013462401 43992025569.928573701266488041146654993318703707511666295476720493953024 29448126.764121021618164430206909037173276672 90429072743629540498.107596019456651774561044010001 1.126825030131969720661201 小提示 If you don't know how to determine wheather encounted the end of input: s is a string and n is an integer C++ while(cin>>s>>n) { ... } c while(scanf("%s%d",s,&n)==2) //to see if the scanf read in as many items as you want /*while(scanf(%s%d",s,&n)!=EOF) //this also work */ { ... } 来源 East Central North America 1988 北大OJ平台(代理

# 北京大学程序在线测评系统1001题解Java版

看了很多AC的代码,感觉这个还可以,希望可以帮助其他人

qq_46224210的博客 482

POJ PKU 必做题+部分难题1001-2500

1011,1012,1013,1014,1015,1017,1026,1028,1032,1035,1041,1046,1129 1149 1154 1165 1182 1185 1190 1191 1201 1251 1273 1275 1276 1286 1322 1338 1363 1364 1401 1456 1459 1564 1579 1637 1657 1658 1679 1716 1742 1775 1797 1711 1833 1838 1844 1882 1929 1942 1961 1988 2013 2104 2112 2115 2186 2255 2352 2369 2406 2409 2421 2479 2480 2498

a为实数java_Exponentiation(java 大实数)

标签:http://acm.hdu.edu.cn/showproblem.php?pid=1063ExponentiationTime Limit: 2000/500 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8076Accepted Submission(s): 22...

weixin_42421331的博客 208

S32DS IDE调试技巧:如何用Attach功能高效定位汽车电子MCU的Bootloader问题

本文详细介绍了在汽车电子MCU开发中,如何利用S32DS IDE的Attach调试模式高效定位Bootloader与应用程序的协同问题。通过对比常规调试与Attach模式的本质差异,并深入讲解工程配置、镜像合并及实战调试流程,帮助开发者在不复位、不重新下载程序的前提下,实时分析系统状态,快速解决内存映射冲突、中断向量表重定向等疑难杂症。

weixin_29168393的博客 266

【VisionMaster】图像源模块之本地图像

图像采集之图像源

zhy29563 6958

Java大数 poj 1001

求高精度幂 Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 168611   Accepted: 40827 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:

Singular__point的博客 597

Cadence 17.4 PSpice仿真555定时器输出方波

这里利用555定时器组成多谐振荡器产生1Hz的方波并用PSpice仿真其输出的方波波形。555定时器是一种广泛应用的中规模集成电路。根据其内部组成的不同,可分为双极型(555B)和CMOS型(555C)两类。两种类型的定时器各有所长。双极型定时器具有较大的驱动能力,其输出电流可达200mA,可直接驱动发光二级管、扬声器、继电器等负载。而CMOS型定时器的输入阻抗高、功耗低。

tj_nonstoper的博客 1万+

hdoj1001-java

hdoj1001import java.util.*;public class Main { public static void main(String[] args) { Scanner ss=new Scanner(System.in); while(ss.hasNextInt()){ int n=ss.nextInt();

iiiamone的专栏 771

STM32 WinUSB免驱实现:从DFU模式到高速通信的实战指南

本文详细介绍了STM32 WinUSB免驱实现方案,从DFU模式到高速通信的完整实战指南。通过修改设备描述符、添加BOS描述符和实现WCID描述符集,开发者可以轻松实现即插即用的USB设备,无需额外安装驱动。文章还提供了性能优化技巧和实际应用案例,帮助开发者快速部署高效稳定的USB通信方案。

weixin_29171087的博客 422

南京邮电大学电工电子实验(二)复习一

本文给电工电子实验(二)的复习进行一些知识点的提醒

YOUXISUN的博客 2958

POJ 1001

大数相乘问题 1.将输入的字符串转化化成整型存储在number 中,运算时每次乘以number 2.将输入的字符串逆向存储在整型数组a[]中,用于存储每次乘以number后的结果 3.具体运算过程就是求number的n次方,每次运算以a[]中的每一位数字乘上number 4.用point计算小数的位数,输出时逆序输出a[],并且处理小数个数即可 #include &lt;stdio.h...

路漫漫其修远兮,吾将上下而求索 2085

【Agent实战】Anthropic Skills、MCP与LangGraph的工程实践

随着大语言模型(LLM)应用从简单的Chatbot向自主智能体(Autonomous Agents)演进,如何管理复杂的任务上下文、标准化的工具调用以及确定性的业务流程,成为了系统设计的核心挑战。Anthropic 推出的 Skills 规范,结合 Model Context Protocol (MCP) 与 Function Calling,为构建模块化、可扩展的 Agent 提供了全新的范式。

kakaZhui的博客 584

JAVA 处理 大数 POJ1001

由于种种原因最近一段时间一直情绪不佳,写几个水题娱乐一下。 话说去年寒假学了点JAVA,写了些推箱子之类的东东,但还从来没有用JAVA A过题,很早就听说JAVA直接用大数类做大数和高精度手段很是淫荡,今天就来水几把寻点乐子。 POJ1001 Description Problems involving the computation of exact values of ve

sunny606的专栏 2243

《AI编程实战:深度学习模型改进与系统部署》,改进专栏目录和介绍

专深度学习相关项目都写在本专栏,《一次订阅解锁全部,都有源码,永久观看》,包括车牌识别、股票预测、人脸识别、风格迁移、图像修复、图像超分辨重建、图像分割等任务,Web/PyQt系统实现。引入Transformer、Swin Transformer、DenseNet、ViT、ConvNeXt等算法实战,提供卷积改进,魔改对比实验,模型剪枝,模型蒸馏,模型量化,全网独家整合改进专栏,为不同领域的同学发表论文提供了大力支持。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3266

SAP ABAP CDS View 里的日期函数

摘要:本文系统介绍了ABAP CDS日期函数在企业级应用中的关键作用,包括账龄计算、合同续期等业务场景。重点解析了DATS_IS_VALID、DATS_DAYS_BETWEEN等核心函数的语义和使用边界,特别强调on_error四种异常处理策略的选择逻辑。针对系统日期获取,对比了经典CDS的参数注入和View Entity会话变量两种方式。文章还提供了完整可运行的示例代码(包含CDS视图和ABAP程序),帮助开发者快速验证不同版本下的函数行为差异,确保在实际项目中正确应用这些日期处理函数。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 378

【大数】高精度数的C++与JAVA实现练习。

处理大数有两种方法,用C++自己手动模拟,和用JAVA里面的大数类,这两种要灵活掌握。 例题1:大数加法(hdu 1002) #include #include #include #include #include #include using namespace std; const int maxn=1000; int max(int a,int b) { if(a>

圣人不仁,使草胜豆苗稀。 1085

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDUOJ - 1063 / POJ - 1001 Exponentiation

Exponentiation Time Limit: 1000/500 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7275Accepted Submission(s): 2072 Problem Description Problems inv...

weixin_30273931的博客 115

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

POJ 1001源码笔记

1. POJ 1001 题目要求: 对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。 Input T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。 Output 对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去...

qq_34892250的博客 290

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【高精度】c++ stl解决poj1001问题

前言: 从去年大四初,保送研究生之后,就没有任何的就业压力了。而现在,作为研一的新生,却听到师兄们找工作诸多不顺的消息。自己就在优快云上搜了一些面试题来做做看。虽然,学过C/C++/JAVA,桌面开发MFC,手机android开发,matlab等等。也开发过一些小的项目,但是,看到这些面试题时,发现大量的考察算法和数据结构等知识。于是乎,我需要加强自己对数据结构的理解和算法的实现。拿POJ上面

郑海波(莫川)的优快云博客 4696

【剑指POJ:每日一题】 POJ 1001 JAVA高精度-BigDecimal

学习路上,与君共勉。 POJ 1001 JAVA 高精度计算 用到BigDecimal类 题目大意: 让你计算R的n次方。 多组输入。输出不包括多余的前导零和尾随零。 分析: 看输出就知道要用JAVA。用BigDecima类做。 其中去掉多余尾随零的方法:BigDecimal类中的 stripTrailingZeros().toPlainString(...

an94460061的博客 279

POJ 1001 Java:求高精度幂

题目本身不难,主要考察到对大数的处理。 Java.math包中,有BigInteger和BigDecimal两个类,分别可以表示长度不可变的,任意精度的整数和小数,并且可以和字符串相互转换,使得Java在处理大数方面具有独特的优势。 AC代码: import java.util.*; import java.math.*; public class POJ1001 { public

卡卡罗特 1407

算法日记(Java实现)第20160715(1)期——POJ1001/POJ1002

今日题目:POJ1001、POJ1002 (一)POJ1001 题目地址:http://poj.org/problem?id=1001 1.首先考虑内置类型是否能用,显然不能用。发现内置double类型最多能保证小数点后15位精度,第16位将会有问题。 2.上网查找到与BigInteger类型类似的BigDecimal类型。该类可保存任意精度的实数,并可表示成指数形式、非指数形

Vascal的博客 1107

poj:1001Exponentiation【java BigDecimal熟悉】

poj1001

小楼一夜听春雨 245

POJ 题目1001 ,hdu1753 (大数,Java简单题)

http://poj.org/problem?id=1001 package com.hdu; import java.math.BigDecimal; import java.util.Scanner; public class POJ1001 { public static void main(String[] args) { Scanner cin = new Scanner

Hanks软件库 1221
上一篇: static private 与 final 的用法总结
下一篇: poj 2305 java大数类
i丹明扬
博客等级 码龄15年 331粉丝 115原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值