算法提高 大数加法
时间限制:1.0s 内存限制:256.0MB
问题描述
输入两个正整数a,b,输出a+b的值。
输入格式
两行,第一行a,第二行b。a和b的长度均小于1000位。
输出格式
一行,a+b的值。
样例输入
4
2
2
样例输出
6
import java.math.BigInteger;
import java.util.Scanner;
/**
*
* @author hhit.soft141.xxf
* @date 2017-3-6
* 注释:列这几题主要是要说明用java写算法要多用java封装好的
* 方法,可以简化很多,这也是java的优势
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger a = new BigInteger(scanner.next());
BigInteger b = new BigInteger(scanner.next());
BigInteger add = a.add(b);
System.out.println(add);
}
}
算法提高 P1001
时间限制:1.0s 内存限制:256.0MB
当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726.
输入:
62773417 12345678
输出:
774980393241726
当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726.
输入:
62773417 12345678
输出:
774980393241726
import java.math.BigInteger;
import java.util.Scanner;
/**
*
* @author hhit.soft141.xxf
* @date 2017-3-6
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BigInteger a = new BigInteger(scanner.next());
BigInteger b = new BigInteger(scanner.next());
BigInteger add = a.multiply(b);
System.out.println(add);
}
}
算法提高 冒泡法排序
时间限制:1.0s 内存限制:512.0MB
输入10个数,用“冒泡法”对10个数排序(由小到大)这10个数字在100以内。
样例输入
1 3 6 8 2 7 9 0 4 5
样例输出
0 1 2 3 4 5 6 7 8 9
import java.util.Arrays;
import java.util.Scanner;
/**
*
* @author hhit.soft141.xxf
* @date 2017-2-14
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] a = new int[10];
for (int i = 0; i < a.length; i++) {
a[i] = scanner.nextInt();
}
Arrays.sort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
}