4
package day20180313;
public class Zylt {
public static void main(String[] args) {
System.out.println("第一次:"+high(100,1));
System.out.println("第2次:"+high(100,2));
System.out.println("第3次:"+high(100,3));
System.out.println("第10次:"+high(100,10));
}
static double high(double height,int n)
{
double sum=height;
for(int i=0; i<n-1; i++)
{
sum+=height;
height=height/2.0;
}
return sum;
}
}
第一次:100.0
第2次:200.0
第3次:250.0
第10次:299.609375
5
package day20180313;
public class ForNum {
public static void main(String[] args) {
System.out.println("(2,1)="+addNum(2,1));
System.out.println("(2,2)="+addNum(2,2));
System.out.println("(2,3)="+addNum(2,3));
System.out.println("(2,5)="+addNum(2,5));
}
static long addNum(int a, int n)
{
long sum=0;
for(int i=1; i<n+1; i++)
{
sum+=numCou(a,i);
}
return sum;
}
//计算出数字
static long numCou(int a, int n)
{
long num=a;
long sum=0;
for(int j=0; j<n; j++)
{
num=a;
for(int k=0; k<j; k++)
{
num=num*10;
}
sum=sum+num;
}
return sum;
}
}
(2,1)=2
(2,2)=24
(2,3)=246
(2,5)=24690
求解一道算法题,我做了一半,大佬来试一下。
7
package day20180313;
public class Fact {
final static int max=100;
final static int Maxnum=1000000000;
public static void main(String[] args) {
long[] a=retarr(7);
for(int i =(int) a[0] ;i>0;i--)//倒序输出每一位
{
System.out.print("---------"+a[i]);
}
System.out.println("+++++++++++++");
addarr(11);
}
static void addarr(long n)
{
long[] sum=new long[max];
//赋值为0
for(int k =max-1;k>0;k--)//
{
sum[k]=0;
}
long i;
for(i=2; i<=n; i++)
{
long[] b=retarr(i);
long num=0;
for(int j=1; j<max-1; j++)
{
sum[j]=sum[j]+b[j]+num;
if(sum[j]>10)
{
num=sum[j]/10;
}
}
}
int ma=0;
for(int k =max-1 ;k>0;)//倒序输出每一位
{
if(sum[k]==0)
{
k--;
}else
{
ma=k;
break;
}
}
System.out.print(":ma===="+ma);
for(int k =ma ;k>0;k--)//倒序输出每一位
{
System.out.println("结果是:"+sum[k]);
}
}
//变成数组。
static long[] retarr(long k)
{
long[] a =new long[max];
long temp=0;
int digit=1;
long number=0;
for(int j=1; j<digit+1; j++)
{
temp=fac(k);
a[j]=temp%10;
number=temp/10;
}
while(number!=0)
{
a[digit+1]=number%10;
number=number/10;
digit++;
}
a[0]=digit;
for(int i = digit;i>0;i--)//倒序输出每一位
System.out.print(a[i]);
System.out.println();
return a;
}
//求质数的算法
static long fac(long i2)
{
int i=2;
int k=(int) Math.sqrt(i2);
if(i2==2)
return 2;
for( i=2; i<=k; i++)
{
if(i2%i==0)
{
break;
}
}
if(i>k)
return i2;
return 0;
}
}
网友评论