不用long的危害(记洛谷P5534题的WA经历,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
不用long的危害(记洛谷P5534题的WA经历,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
閑來無事想起了洛谷,打卡簽到刷他幾個題再說,殊不知這是杯具的開始~~
P5534是一個弱智題,入門級別,只需要知道下面公式即可,而且還不止一個公式。
下面是我用的公式(高中的感覺真讓人懷念啊~~):
看題:
題目描述
小 X 給了你一個等差數列的前兩項以及項數,請你求出這個等差數列各項之和。
等差數列:對于一個 n項數列 a,如果滿足對于任意 i∈[1,n),有 ai+1?ai=d,其中 d 為定值,則稱這個數列為一個等差數列。
輸入格式
一行 3個整數 a1,a2,n,表示等差數列的第 1,2 項以及項數。
數據范圍:
∣a1?∣,∣a2?∣≤10^6。
3≤n≤10^6。
輸出格式
一行一個整數,表示答案。
輸入輸出樣例
輸入 #1
輸出 #1
6輸入 #2
-5 -10 5輸出 #2
-75說明/提示
【樣例 1 說明】
這個等差數列為 1 2 3,其各項之和為 6。
我是用Java寫的:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int a1 = scanner.nextInt();int a2 = scanner.nextInt();int num = scanner.nextInt();int d = a2 - a1;System.out.println(num*a1 + num*(num-1)*d/2);scanner.close();}}然后一般小白看來肯定OK是吧,提交以后我傻了:
這都是啥?
冥思苦想很久,大膽地做了一個很極限的測試:
結果是悲壯的:
-2137671075這是啥?
我恍然大悟——溢出了。。。
那就換long唄?畢竟測試數據不超過100000。。。
一篇感人至深的code誕生了:
運行上面的測試用例:
999950000699997很棒,然后:
終于AC了,痛哭流涕~~
以后要多做OJ,避免自己成為能寫系統卻不能做OJ的菜雞~~~
總結
以上是生活随笔為你收集整理的不用long的危害(记洛谷P5534题的WA经历,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】常见的Eclipse快捷键
- 下一篇: 洛谷P5709、P5710、P5711、