POJ - 2325 Persistent Numbers(高精度除法,Java)
2021/9/16 22:04:45
本文主要是介绍POJ - 2325 Persistent Numbers(高精度除法,Java),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
POJ - 2325 Persistent Numbers
题意:给定一个数N,求一个数M,要求:将M的各个位的数相乘得到N,M最小。依次输出能够被整除的数字
思路:用到高精度除法,将给定的数从9开始试除,接着试除8,7,6,5,4,3,2。
0
<
=
N
<
=
1
0
1000
0<=N<=10^{1000}
0<=N<=101000
因为有大数除法,所以Java自带的BigInteger就很方便,直接从9-2循环找答案,用一个字符串res存起来,最后直接输出字符串即可,
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while(cin.hasNext()) { BigInteger num=cin.nextBigInteger(); if(num.equals(BigInteger.valueOf(-1))) break; //多实例结束的标志 if(num.compareTo(BigInteger.TEN)<0)//小于10,加10输出 System.out.println(num.add(BigInteger.TEN)); else { String res=""; boolean flag=false; while(num.compareTo(BigInteger.ONE)!=0)//是否被整除完毕 { int i; for(i=9;i>=2;i--) { BigInteger a=BigInteger.valueOf(i); if(num.remainder(a).equals(BigInteger.ZERO)) { res+=i; num=num.divide(a); break; } } if(i==1) { flag=true; break; } } if(flag) System.out.println("There is no such number."); else { char []array=res.toCharArray(); for (int i = array.length - 1; i >= 0; i--) System.out.printf("%c",array[i]); System.out.println(); } } } } }
这篇关于POJ - 2325 Persistent Numbers(高精度除法,Java)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25初学者必备:订单系统资料详解与实操教程
- 2024-12-24内网穿透资料入门教程
- 2024-12-24微服务资料入门指南
- 2024-12-24微信支付系统资料入门教程
- 2024-12-24微信支付资料详解:新手入门指南
- 2024-12-24Hbase资料:新手入门教程
- 2024-12-24Java部署资料
- 2024-12-24Java订单系统资料:新手入门教程
- 2024-12-24Java分布式资料入门教程
- 2024-12-24Java监控系统资料详解与入门教程