前提・実現したいこと
競技プログラミングatcoderのC問題(https://atcoder.jp/contests/abc144/tasks/abc144_c)の入力例で10000000019を入力するとlong型でコードを書いたつもりがループしてしまいます。どこが間違っているのでしょうか?
発生している問題・エラーメッセージ
cmdがフリーズ、atcoderのコードテストも何も出ませんでした。実行時間も超過してしまいました。
該当のソースコード
Java
1import java.util.*; 2public class Main { 3 public static void main(String[] args) { 4 Scanner sc = new Scanner(System.in); 5 long N = sc.nextLong(); 6 ArrayList<Long> a = new ArrayList<Long>(); 7 ArrayList<Long> b = new ArrayList<Long>(); 8 long t = 0; 9 long g = 0; 10 for (long i = 1;i < N;i++) { 11 if (N%i == 0) { 12 t = i; 13 g = N/i; 14 a.add(t); 15 b.add(g); 16 } 17 } 18 int c = 0; 19 int i = 0; 20 long S[] = new long[a.size()]; 21 while (c < a.size()) { 22 S[i] = a.get(i)+b.get(i); 23 i++; 24 c++; 25 } 26 Arrays.sort(S); 27 System.out.println((long)S[0]-2); 28 } 29}
試したこと
調べたところlong型を使用するときに数字の末尾にLを付けるとあったのですがスキャナーでは付けれませんでした。
BigIntegerも試しましたが、よくわかりませんでした。
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/27 14:37
2019/10/27 16:13