class WangTi2
{
public static void main(String[] args)
{
long start = System.currentTimeMillis();//看一下要运行多长时间
shuanShu();
long end = System.currentTimeMillis();//看一下要运行多长时间
System.out.println("用时"+(end-start));
}
public static void shuanShu()
{
int[] arr = new int[100];
arr[0] = 1;
for(int x=0;x<11213;x++) //可以把11213改成100验证方法的正确性
{ //2^20=1048576
int z = 0;
/*
这个循环是记录乘2的结果
*/
for(int y =0;y{
arr[y] = arr[y]<<1;
arr[y] = arr[y] + z;
if (arr[y]>9)
{
arr[y] -= 10;
if(y!=arr.length-1)
z = 1;
}
else z = 0;
}
}
arr[0]--; //这个给最后一个位减1,这个值不会是负数。
System.out.println("这个数的最后100位是:");
for(int x=arr.length-1;x>=0;x--)
{
System.out.print(arr[x]);
if(x%3==0&&x!=0)
System.out.print(",");
}
System.out.println();
}
}
思路是有的。定义数组,只存储最后100位。然后不停的乘2,大于9的向上一个数组加1。重复11213次。再把第一个数组减1。这样做是可以的。效率很低。求高人解答。。呵呵。
朋友,所谓术业有专攻,你到这个平台上来发专业性特别强的问题其实是不太恰当的,虽然并没有什么错误。我还是建议你发表在一些专业的平台上,比如CSDN。