这段时间期末考试C++终于结束了,趁着有一点时间稍微整理一下吧。
首先是这个题目。
Description
给出两个正整数 A,B,求它们的最大公约数。
Input
输入共两行,第一行一个正整数 A,第二行一个正整数 B。1≤A,B≤103000
Output
在一行中输出一个整数,表示 A,B 的最大公约数。
因为数据范围的问题,我们用普通的方式来求肯定不可以,C++我寻思着也有点麻烦,
(大概思路就是用二进制算法求最大整数的最大公约数,转换为a[]*(2^t)的形式,涉及一点高精度除法和减法,但我真的懒到家了…)
(咳咳,好了不要揭穿我了嘤嘤嘤)
而且大二要学Java,所以这里我想到了java来写比较方便,python臣妾不会啊呜呜呜,就试了试java看看。
(菜鸡还是选择了偷懒) ,
代码如下:
import java.util.*;
import java.math.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner Fin = new Scanner(System.in);
BigInteger A = Fin.nextBigInteger(),B = Fin.nextBigInteger();
System.out.println(A.gcd(B));
}
}
这个代码用了几个小包,我稍作整理,本来学的也不深,难免有许多不周到的地方,日后我还会回看慢慢改的吧
(菜鸡惭愧捂脸,羞耻,喷轻一点哦,嘤嘤嘤) 。
首先是"import java.util. * "这个东西:
因为我们在主程序中实现了输入,这个东西有点像C++中的头文件和using namespace std;。而这里导入了java.util包中的类接口,对于输入,如果我们不用上面程序的方式来写的话,我们应该写成:import java.util.Scanner;或者如果我们连这个都不写的话,我们就要写成java.util.Scanner sc = new java.util.Scanner();
这样的话就有点麻烦,(莫名想起C++中万能头文件)
import java.util.*中的 * 表示这个包下的所有类库(不包括子包),就是全部的意思。
而有了这行语句后,java.util包下的所有类和接口现在命名空间中都是可见的。我们可以直接使用Scanner、Map、Comparator、Iterator等名称,而不必写出它们的全限定名。
但是我们还是推荐写 import java.util.Scanner,因为会涉及到命名空间污染的问题,一般最好少用通配符。
其次就是"import java.math. * "这个东西:
其实我们光看表面意思的话,我们就不难猜到这个东西肯定和数学有关
(废话)
“ * ”的含义上面一个也讲了,感觉这个东西很像头文件#include"math"里面的东西,然后这里介绍一点点用法就行了吧
java.math是一个包,主要是用在执行任意精度整数算法和任意精度小数算法的类,而java.lang.Math类中包含一些数字的基本操作,提供e和pi两个静态常量。
下面是一些简单的用法:
package example;
import java.util.*;//表示了导入了util包中的所有类,所以不需要java.util.Scanner也可以了。
import java.math.*;//类比于上面,也调用的是所有的数学类的。
import java.io.*;
import java.util.Scanner;
public class Now {
public static void main(String[] args) {
// TODO= 自动生成的方法存根
System.out.println(Math.sqrt(4));//平方根 2.0
System.out.println(Math.cbrt(8));//立方根 2.0
System.out.println(Math.pow(2, 4));//a的b次方 16.0
System.out.println(Math.max(3, 4));//最大值 4
System.out.println(Math.min(3, 4));//最小值 3
System.out.println(Math.abs(-11.1));//绝对值 11.1
System.out.println(Math.ceil(-11.2));//向上取整-11.0
System.out.println(Math.floor(-10.2));//向下取整-11.0
System.out.println(Math.rint(10.4));//四舍五入,返回double值 10.0
System.out.println(Math.random());//取得一个随机数x,且0.0<=x<1.0,0.6192534519742223
System.out.println(Math.round(10.4));//四舍五入,float返回int,double返回long 10
}
}
最后是" import java .io. * "这个东西
就是标准输入输出流,io就是缩写,util是工具类的缩写。
这次的整理就到这里了…
(我保证我真的现在只会这些啊呜呜呜)