20210225

基础练习 圆的面积

问题描述

给定圆的半径r,求圆的面积。

输入格式

输入包含一个整数r,表示圆的半径。

输出格式

输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

说明:在本题中,输入是一个整数,但是输出是一个实数。

对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。

实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。

解题思路

java四舍五入时保留指定小数位数

  1. double f = 3.1516;
    BigDecimal b = new BigDecimal(f);
    double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 
    输出结果f1为 3.15

    解读:
      public BigDecimal setScale(int newScale, int roundingMode) //int newScale 为小数点后保留的位数, int roundingMode 为变量进行取舍的方式;
      BigDecimal.ROUND_HALF_UP 属性含义为为四舍五入

  2. String format = new DecimalFormat("#.0000").format(3.1415926);
    System.out.println(format);
    输出结果为 3.1416
    

    解读:
      #.00 表示两位小数 #.0000四位小数 以此类推…

  3. double num = 3.1415926;
    String result = String.format("%.4f", num);
    System.out.println(result);
    输出结果为:3.1416
    

    解读:
      %.2f 中 %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型。

    代码实现

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int r = scanner.nextInt();
		if (r >= 1 && r <= 10000) {
			double pi = Math.PI;
			double s = pi * r * r;
			System.out.printf("%.7f", s);
		}
	}
}

视频学习 整数的基本性质与运用

蓝桥杯经典算法第五讲整数的基本性质与运用

学习心得

  • 素数,整除,余数

  • 最大公约数,最小公倍数 = a * b / gcd(a, b)

    public static int gcd(int a, int b) {//最大公约数 递归方式

    ​ if (a == 0) return b;

    ​ return gcd(b%a, a);

    }

  • (a+b)%p = (a%p + b%p)%p

    (a*b)%p = (a%p) * (b%p) % p

对应练习 查找整数

Description

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

Input

输入描述:

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输入样例:
6
1 9 4 8 3 9
9

Output
输出描述:
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
输出样例:
2

import java.util.Scanner;

public class Main {
		public static void main(String[] args) {
			Scanner scanner = new Scanner(System.in);
			int n = scanner.nextInt();
			int a[] = new int [n] ;
			for(int i = 0 ; i < n ; i++)
				a[i] = scanner.nextInt() ;
			int k = scanner.nextInt() ;
			for(int i = 0 ; i < n ; i++) {
				if(a[i] == k) {
					System.out.println(i+1);
					break;
					}
				if(i == n - 1)
					System.out.println(-1);
			}
          	scanner.close();
		}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值