import java.math.*;
import java.util.*;
public class a248
{
public static void main(String[] args)
{
BigDecimal ans;
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt())
{
BigDecimal number1=sc.nextBigDecimal();
BigDecimal number2=sc.nextBigDecimal();
int range=sc.nextInt();
ans=number1.divide(number2,range,RoundingMode.FLOOR);
System.out.println(ans);
}
sc.close();
}
}
不是大神
這題如果要進一步提升速度 可以從2個地方下手
第一個是算法的部分
我們可以將輸出以小數點作為基準 拆成2個部分來看
小數點前的部分 可以直接從 a/b 得知
小數點後的部分 則可以模擬除法來做
a %= b;
for(int i = 0; i < n; i++){
a *= 10;
tmp.append(a / b); //tmp是我的StringBuffer 用來儲存答案 我只是懶得想名字
a %= b;
}
不過這種方法需要用BufferedWriter輸出(記得最後要flush()) 或是 將答案先用StringBuffer儲存起來 最後再一起輸出
AC (0.6s, 50MB)
這是我用Scanner進行輸入 StringBuffer儲存答案 搭配這種寫法的結果
第二種方法就是從IO下手 不過這題時限是3秒 蠻充裕的 不太需要這樣寫
output上面已經提過了
input可以用BufferedReader讀取 快比Scanner快
AC (0.4s, 46.1MB)
這是輸入改用BufferedReader的readLine()搭配split(" ")的結果
不是大神
這題如果要進一步提升速度 可以從2個地方下手
第一個是算法的部分
我們可以將輸出以小數點作為基準 拆成2個部分來看
小數點前的部分 可以直接從 a/b 得知
小數點後的部分 則可以模擬除法來做
a %= b;
for(int i = 0; i < n; i++){
a *= 10;
tmp.append(a / b); //tmp是我的StringBuffer 用來儲存答案 我只是懶得想名字
a %= b;
}
不過這種方法需要用BufferedWriter輸出(記得最後要flush()) 或是 將答案先用StringBuffer儲存起來 最後再一起輸出
AC (0.6s, 50MB)
這是我用Scanner進行輸入 StringBuffer儲存答案 搭配這種寫法的結果
第二種方法就是從IO下手 不過這題時限是3秒 蠻充裕的 不太需要這樣寫
output上面已經提過了
input可以用BufferedReader讀取 快比Scanner快
AC (0.4s, 46.1MB)
這是輸入改用BufferedReader的readLine()搭配split(" ")的結果
原來是這樣 謝謝"我心目中的大神"XD