您的位置:首页 > 其它

算法入门-循环结构程序设计

2017-02-27 11:28 597 查看

2-1 aabb

输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等)。



方法一:

class calculate{
public static void main(String[] args){
for(int i=1000;i < 9999 ;i++){
int qian = i/1000;
int bai = i/100%10;
int shi = i%100/10;
int ge = i%10;
int num = (int)Math.sqrt(i);
if(num*num == i && qian==bai && shi == ge){
System.out.printf("%d ",i);
}
}

}
}
方法二:

class calculate{
public static void main(String[] args){
for(int a = 1;a <= 9;a++){
for(int b = 0;b <= 9;b++){
//判断是否是完全平方的方法之一
//int num = a*1100+ b*11;
//int numsqrt = (int)Math.sqrt(num);
//if(numsqrt*numsqrt == num){
//	System.out.printf("%d ",num);
//}
int num = a*1100 + b*11;
double flor = Math.sqrt(num) + 0.5;
int numsqrt = (int)Math.floor(flor);
if(numsqrt* numsqrt == num){
System.out.printf("%d ",num);
}
}
}

}
}


2-2  3*n +1问题

对于任何大于1的自然数n,若n为奇数,则将n变为3*n +1,否则变为n的一半,经过若干次变换,最后一定会使n变为1.输入n,输出变换次数

输入样例:3

样例输出;7

class calculate{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int conunt = 0;
while(n > 1){
//(n%2 == 1 )? n = 3*n +1:n = n / 2;
if(n%2 == 1){
n = 3*n + 1;
}else{
n = n / 2;
}
conunt++;
}
System.out.printf("%d ",conunt);
}
}


2-3 阶乘之和

输入n ,计算S = 1!+2!+3!+...+n! 输出结果的后6位,这里n<=10^6,

样例输入:10

样例输出:37913

import java.util.Scanner;
class calculate{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int conunt = 0;
long sum = 0;
for(int i = 1;i<=n;i++){
sum += f(i);
}
String result = String.valueOf(sum%1000000);
System.out.printf("%s",result);
}

public static long f(int n){
long sum = 1;
for(int i = 1; i<= n;i++){
sum *= i;
}
return sum;
}
}

2-4 位数

输入一个不超过10^9的正整数,输出它的位数。例如 12735的位数是5,请不要使用任何数学公式,只用四则运算和循环语句实现。

class calculate{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String num = sc.next();
System.out.printf("%s",num.length());
}
}


2-5水仙花数

输出100~999的所有水仙花数。

import java.util.Scanner;
class calculate{
public static void main(String[] args){

for(int a = 1;a < 10;a++){
for(int b = 0;b < 10;b++){
for(int c = 0;c < 10;c++){
int numq = 100*a + 10*b + c;
int numw = a*a*a + b*b*b + c*c*c;
if(numq == numw){
System.out.printf("%d\n",numq);
}
}
}
}

}
}

2-6 倒三角

输入一个整数n<=20 ,输出一个n层的倒三角,例如n=5时,输出如下:

#########

 #######

  #####

   ###

     #

import java.util.Scanner;
class calculate{
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
int n = sc.nextInt();
for(int i = n ;i > 0;i--){
for(int j = 0;j < 2*i-1;j++){
System.out.printf("%s","#");
}
System.out.printf("\n");
for(int k = (n - i);k >= 0;k--){
System.out.printf(" ");
}

}

}
}

2-7调和级数

输入一个正整数n,输出H(n) = 1+1/2+1/3+...+1/n;保留三位小数。例如n=3时,输出1.833.

import java.util.Scanner;
class calculate{
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
int n = sc.nextInt();
double sum = 0;
for(int i = 1;i<=n;i++){
sum += 1.0/i;
}

System.out.printf("%.3f",sum);

}
}

2-8近似计算

计算PI/4 = 1-1/3+1/5-1/7+...,直到最后一项小于10^-6。

class calculate{
public static void main(String[] args){
double sum = 0;
int count =1;
for(int i = 1;;i+=2){
double f = 1.0/i;
if(count%2 == 0){
sum -= f;
}else{
sum += f;
}
count++;
if(f < Math.pow(10, -6)){
break;
}
}

System.out.printf("%f",sum);

}
}

2-9 子序列的和

输入两个正整数,n<m<10^6,输出 1/n^2 + 1/(n+1)^2 +...+1/m^2,保留5位小数。例如n=2,m=4时答案是0.42361;n65536,m=655360时答案是0.00001。

import java.util.Scanner;
class calculate{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
if( n > m || m > Math.pow(10,6)){
System.out.printf("%s","错误输入");
}
double sum = 0;
for(int i = n;i<=m;i++){
double f = 1.0/(Math.pow(i,2));
sum+=f;
}
System.out.printf("%.5f",sum);

}
}


2-10分数化小数
输入正整数a,b,c,输出a/b的小数形式,精确到小数点的c位。a,b<=10^6,c<= 100。例如a=1,b=6,c=4时应输出0.1667

import java.util.Scanner;
class calculate{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
int c = sc.nextInt();
double d = a/b;
System.out.printf("%."+c+"f",d);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法