题目:双倍超立方数是指一个正整数可以正好被拆分为两种不同的a^3+b^3的方式,其中a,b均为整数且0<a<=b。对于任何一个指定的 int n, 返回所有的小于等于n的双倍超立方数的个数。
Java源代码:
System.out.println("请输入整数:");
int n = new Scanner(System.in).nextInt();
int count2 = 0;
int count3 = 0;
long mb = System.currentTimeMillis();
int[] table = new int[n+1];
for(int i=1; i*i*i<=n ; i++)
{
for(int j= 1; j<= i; j++)
{
int m = i*i*i+j*j*j;
if(m>n)
break;
table[m]++;
if(table[m]==2)
count2++;
else if(table[m]==3)
count3++;
}
}
System.out.println((System.currentTimeMillis() - mb));
System.out.println(count2-count3);
速度还是能够达到要求的,不知道大家有没有更好的解法多多交流!
Java源代码:
System.out.println("请输入整数:");
int n = new Scanner(System.in).nextInt();
int count2 = 0;
int count3 = 0;
long mb = System.currentTimeMillis();
int[] table = new int[n+1];
for(int i=1; i*i*i<=n ; i++)
{
for(int j= 1; j<= i; j++)
{
int m = i*i*i+j*j*j;
if(m>n)
break;
table[m]++;
if(table[m]==2)
count2++;
else if(table[m]==3)
count3++;
}
}
System.out.println((System.currentTimeMillis() - mb));
System.out.println(count2-count3);
速度还是能够达到要求的,不知道大家有没有更好的解法多多交流!