• 蓝桥杯javaB组入坑


    蓝桥杯Java B组

    准备工作

    练习入口 | 准备资料 | 查阅说明

    编辑环境

    我们建议您使用大赛指定的编辑环境来编写你的代码,以保证评测时和我们的编译环境一致,同时和比赛时使用的环境也一致。

    推荐的编辑环境如下:

    语言 编辑环境 下载地址
    C++ Dev-CPP SourceForge上的Dev-CPP
    C Dev-CPP SourceForge上的Dev-CPP
    JAVA Eclipse Eclipse
    PYTHON IDLE Python

    对于不同的语言,系统的编译环境如下:

    语言 编译环境/解释器 编译选项
    C++ g++ (GCC) 4.9.2 g++ code.cpp -O2 -Wl,--stack=268435456 -DONLINE_JUDGE
    C gcc (GCC) 4.9.2 gcc code.c -O2 -Wl,--stack=268435456 -DONLINE_JUDGE
    JAVA Javac 1.8.0 javac Main.java
    PYTHON Python 3.8.0

    如果你使用Java语言,对于所有的试题,你的主类名称都必须是Main

    C/C++语言中,主函数main的返回值类型必须是int,返回值必须是0,否则评测会认为程序运行错误。

    学生机环境-Java编程环境及API帮助文档

    链接: https://pan.baidu.com/s/1rbG9VOdycgSq58LXAqPVrw

    提取码: cjg2

    本人参加的是 Java软件开发 大学B组。所以使用上面链接提供的工具。


    入门训练

    试题编号 试题名称 关键字 更新时间
    BEGIN-1 A+B问题 入门 2013-10-09
    BEGIN-2 序列求和 入门 求和公式 2013-10-09
    BEGIN-3 圆的面积 入门 实数输出 2013-10-09
    BEGIN-4 Fibonacci数列 入门 数列 取模 2013-10-09

    入门训练题主要是是为了给大家熟悉考试系统的环境。网页上给出 问题描述 和 一系列提示,

    先在自己电脑上的开发环境敲出正确代码,再把代码拷贝到网页中的代码区。


    A+B问题

    问题描述

    输入A、B,输出A+B。

    数据规模与约定

    -10000 <= A, B <= 10000。

    提醒:做题时注意数据范围,自己选用的合适数据类型。比如此处用int没问题。

    Java源代码

    import java.util.*;
    public class Main
    {
        public static void main(String args[])
        {
            Scanner sc = new Scanner(System.in);
            Integer a = sc.nextInt();
            Integer b = sc.nextInt();
            System.out.println(a + b);
        }
    }
    

    序列求和

    问题描述

    求1+2+3+...+n的值。

    数据规模与约定

    1 <= n <= 1,000,000,000。

    输入格式 输出格式
    输入包括一个整数n。 输出一行,包括一个整数,表示1+2+3+...+n的值。

    注意到此处的数据规模高达10亿,参考下表int类型可以接受20多亿。输入n的值可以用int类型的变量接收。

    但是考虑到这题等差数列求和公式:(1+n)*n/2 ,进行了亿级的乘法运算。所以结果还用int类型就会溢出数据了。

    为了方便运算就用long类型的变量接收输入的数据。

    Java八大基本数据类型

    数据类型 字节 数据范围
    byte 1 -128~127
    short 2 -32768 ~ 32767
    int 4 -2147483648 ~ 2147483647 (20亿级)
    long 8 -18446744073709551616 ~ 18446744073709551615
    float 4 -2147483648 ~ 2147483647
    double 8 -18446744073709551616 ~ 18446744073709551615
    char 2 英文字符所占字节 2,中文字符根据编码不同
    boolean 1 true | false

    Java源代码

    import java.util.Scanner;
    
    public class Main {
    	
    	public static void main(String args[]){	
    		Scanner sc = new Scanner(System.in);
    		Long n =sc.nextLong();
    		System.out.println((1+n)*n/2);	
    	}
    }
    

    圆的面积

    问题描述

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

    数据规模与约定

    1 <= r <= 10000 。

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

    思路:圆的面积公式 = πr^2
    使用int变量接收输入数据,java中的π可以用Math.PI获取。通过公式求得结果,最后输出结果时保留7位小数。

    Java源代码

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String args[]){
    		Scanner sc = new Scanner(System.in);
    		int r = sc.nextInt();
    		double area = r * r * Math.PI;
    		System.out.printf("%.7f",area);
    	}
    }
    
    

    printf不就是C语言的语法吗

    总结

    System.out.print(""); 输出语句后不换行,再进行输出接着刚才的语句后面

    System.out.println(""); 输出语句后换行,再进行输出在新的一行输出

    System.out.printf("");输出格式控制的语句,不会自动换行。


    Fibonacci数列

    问题描述

    Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

    当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

    数据规模与约定

    1 <= n <= 1,000,000。

    输入格式 输出格式
    输入包含一个整数n。 输出一行,包含一个整数,表示Fn除以10007的余数。

    思路: 答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,

    再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

    Java源代码

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args){
    		Scanner sc = new Scanner(System.in);
    		int n =sc.nextInt();
    		System.out.print(fibonacci(n));
    	}
    	
    	public static int fibonacci(int n){
    		int f1=1,f2=1,temp = 0;
    		for(int i=2;i<n;i++){
    			temp = f2;
    			f2 = (f1+f2)%10007;
    			f1 = temp;
    		}
    		return f2;
    	}
    }
    

    由于最近刚学了JUnit单元测试,为了巩固知识,活学活用,所以把源代码模块化方便测试。

    官方测试用例

    序号 输入 输出
    1 1 1
    2 2 1
    3 10 55
    4 55 2091
    5 100 6545
    6 500 8907
    7 999 4659
    8 9999 9973
    9 99999 6415
    10 999999 3131

    很简单,但是不要大意是锦州。

  • 相关阅读:
    【UVa】And Then There Was One(dp)
    【vijos】1006 晴天小猪历险记之Hill(dijkstra)
    【UVa】Palindromic Subsequence(dp+字典序)
    【UVa】Wavio Sequence(dp)
    【UVa】Salesmen(dp)
    【UVa】Partitioning by Palindromes(dp)
    小结:特殊的技巧
    java 中 进程和线程的区别
    java中的 sleep() 和 wait() 有什么区别?
    Java 静态static 关键字作用
  • 原文地址:https://www.cnblogs.com/1101-/p/12588070.html
Copyright © 2020-2023  润新知