AOJ1109 Fermat's Last Theorem
問題リンク Fermat's Last Theorem
- 概要
整数zが与えられる。z^3を超えないx^3+y^3を見つけ、z^3-(x^3+y^3)を計算せよ。xとyは0より大きい整数とする。
1 < z < 1111
- 解法
iを1, jをzとします。
i^3+j^3がzを超えたならjを1つ減らし、そうでないならばiを1つ増やします。これをi<=jである間続けます。
- ソース
import java.util.Scanner; //Fermat's Last Theorem public class AOJ1109 { void run(){ long[] p = new long[1111]; for(int i=0;i<1111;i++)p[i]=(long) Math.pow(i, 3); Scanner sc = new Scanner(System.in); while(true){ int z = sc.nextInt(); if(z==0)break; int i=1, j=z; long max = 0; while(i<=j){ long val = p[i]+p[j]; if(val<=p[z]){ i++; max = Math.max(max, val); } else j--; } System.out.println(p[z]-max); } } public static void main(String[] args) { new AOJ1109().run(); } }