java 大数题用BigInteger类,就很简单了
来源:互联网 发布:山西老年大学网络报名 编辑:程序博客网 时间:2024/05/17 12:46
小白一个,第一次做大数题,开始没有头绪,百度后发现用java BigInteger的话非常简单
HDOJ1002
- //hdoj 1002
- import java.util.Scanner;//导入Scanner类
- import java.math.*;//用到BigInteger类
- public class Main {
- public static void main(String[] args) {
- Scanner cin=new Scanner(System.in);
- while(cin.hasNext()){
- int i=1;
- int t=cin.nextInt();//输入次数
- BigInteger a,b,sum;
- while (t>=i){
- a=cin.nextBigInteger();
- b=cin.nextBigInteger();
- sum=a.add(b);//直接相加
- System.out.println("Case "+i+":");
- System.out.println(a+" + "+b+" = "+sum);
- if(t>i)
- System.out.println("");//没这条AC不了
- i++;
- }
- }
- }
- }
如果用c++则比较繁琐些
- //hdoj1002
- #include <iostream>
- #include <string.h>
- using namespace std;
- #define MAX_SIZE 1000 //定义一个常量
- void clear(int n,int a[],int b[],int c[])//重置函数
- {
- for(int i=0;i<n;i++)
- {
- a[i]=0;
- b[i]=0;
- c[i]=0;
- }
- }
- int main()
- {
- char s1[MAX_SIZE],s2[MAX_SIZE];
- int s11[MAX_SIZE]={0},s22[MAX_SIZE]={0},sum[MAX_SIZE]={0},i,j=1;//
- int len1,len2,maxlen,t;
- cin>>t;
- while(t--)
- {
- cin>>s1>>s2;
- len1=strlen(s1);
- len2=strlen(s2);
- maxlen=len1>len2?len1:len2;
- for(i=0;i<len1;i++)
- s11[i]=s1[len1-i-1]-'0';//ASCII码中数字字符和数字相差48,即’0‘
- for(i=0;i<len2;i++)
- s22[i]=s2[len2-i-1]-'0';
- for(i=0;i<maxlen;i++)
- {
- sum[i]+=s11[i]+s22[i];
- sum[i+1]=sum[i]/10;//如果大于10则向前进1位
- sum[i]=sum[i]%10;//大于10则取余
- }
- if(sum[i]==1)
- maxlen++;//若sum[i]=1说明sum[i]为最高位后一位
- cout<<"Case "<<j<<":"<<endl;
- j++;
- cout<<s1<<" + "<<s2<<" = ";
- for(i=maxlen-1;i>=0;i--)
- cout<<sum[i];
- cout<<endl;
- if(t!=0)
- cout<<endl;
- clear(maxlen,s11,s22,sum); //重置
- }
- }
有了之前的经验,再做大数题就不会困惑了,HDOJ1042很快就AC了
//hdoj 1042import java.util.Scanner;//导入Scanner类 import java.math.*;//用到BigInteger类public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); while(cin.hasNext()){ BigInteger a=BigInteger.valueOf(1);//不能直接给BigInteger赋值 要通过valueOf方法 BigInteger b=BigInteger.valueOf(1); BigInteger c=BigInteger.valueOf(1); intn=cin.nextInt();//输入N值 while(n>1){ b=b.add(a); c=c.multiply(b); n--; } System.out.println(c); } }}
0 0
- java 大数题用BigInteger类,就很简单了
- 大数类java.math.BigInteger
- EASY_PAT_1065 用Java的BigInteger类解决大数问题
- Java 大数类 BigInteger和 BigDecimal
- JAVA大数类 BigInteger和BigDecimal用法
- java 大数BigInteger总结
- Java大数-BigInteger BigDecimal
- Java大数BigInteger BigDecimal
- java 大数BigInteger总结
- java 大数BigInteger总结
- java大数BigInteger总结
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA 大数(BigInteger) 归纳总结 .
- JAVA 大数(BigInteger) 归纳总结
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- linux乱入
- opencv 2.x学习笔记(九)简单绘图
- Oracle基本语句
- 二叉树中序遍历Java实现
- 黑马程序员_java基础篇之面向对象(1)
- java 大数题用BigInteger类,就很简单了
- uva133-The Dole Queue
- Swap Nodes in Pairs
- 【翻译自mos文章】对于每一个文件的 file.id and file.incarnation number,重命名文件别名
- leetcode 之Rotate List 解题思路
- netlink
- OCP 1Z0 053 141
- Java经典23种设计模式之行为型模式(一)
- 雷军投资原则