博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法入门-循环结构程序设计
阅读量:4164 次
发布时间:2019-05-26

本文共 4162 字,大约阅读时间需要 13 分钟。

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);			}}

你可能感兴趣的文章
TinyXml2解析xml用法例子
查看>>
Linux 虚拟内存和物理内存
查看>>
产品和技术,你选对了吗?
查看>>
哈希表(Hash Table)-哈希概述
查看>>
Filebench的安装及使用
查看>>
Ubuntu下 E: Could not get lock /var/lib/apt/lists/lock - open (11: Recource temporarily unavailable)
查看>>
Linux-mmap映射物理内存到用户空间
查看>>
Ext4文件系统三种日志模式——journal、ordered、writeback
查看>>
Linux挂载ext4根文件系统为journal模式
查看>>
linux内核引导参数解析及添加
查看>>
长短期记忆人工神经网络(LSTM)及其tensorflow代码应用
查看>>
长短期记忆人工神经网络(LSTM)网络学习资料
查看>>
运行网络中搜寻到的python程序代码——以长短期记忆人工神经网络(lstm)python代码为例
查看>>
闪存文件系统(Flash File System)
查看>>
WinMIPS64工具进行MIPS指令集实验(一)
查看>>
WinMIPS64工具进行MIPS指令集实验(二)
查看>>
Linux上快速入门英特尔Optane DC Persistent Memory Module的配置与使用
查看>>
Intel Optane DC Persistent Memory Module (PMM)详解
查看>>
Ubuntu 18.04安装英特尔Optane DC Persistent Memory Module配置工具ipmctl
查看>>
NUMA架构下的CPU拓扑结构
查看>>