彩票平台:首页 > 学习之路 > ACM||算法ACM||算法

113彩票官网

卞振伟2019-02-11【ACM||算法】人已围观

简介蓝桥杯
为促进软件和信息领域专业技术人才培养,提升高校毕业生的就业竞争力,由教育部就业指导中心支持,工业和信息化部人才交流中心举办。

113彩票官网

 

题目文字解析在本页底部

 

A:

public class Main{
    static boolean run(int year) {
        if(year%400==0 || (year%100!=0 && year%4==0))
            return true;
        return false;
    }
    public static void main(String args[]) {
        int cont = 0;
        int year = 2000;
        while(cont%7!=2) {
            for(int i = year; i <= year + 99; ++i) {
                if(run(i))    cont+=2;
                else    cont+=1;
//                System.out.println(i + "   " + Integer.toString(cont) + "   " + Integer.toString(year+99));
                if(i == year+99)
                    break;
            }
            year=year+100;
            
        }
        System.out.println(year-1);
    }
}

//Calendar类
import java.util.*;
 
public class Main{
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        for (int i=1999; ; i+=100) {
            calendar.set(i, 11, 31);
            if (calendar.get(Calendar.DAY_OF_WEEK)==1) {
                System.out.println(calendar.get(Calendar.YEAR));
                break;
            }
        }
    }
}

 

B:

public class Main {

    public static void main(String[] args) {
        int ans = 0;
        for (int i = 1; i < 10; i++)
            for (int j = 1; j < 10; j++)
                for (int k = 1; k < 10; k++)
                    for (int p = 1; p < 10; p++)
                        for (int q = 1; q < 10; q++) {
                            if (i != j && i != k && i != p && 
                                i != q && j != k && j != p && 
                                j != q && k != p && k != q && 
                                p != q)
                                if ( ( (i * 10 + j) * (k * 100 + p * 10 + q) ) == 
                                     ( (i * 100 + p * 10 + j) * (k * 10 + q) ) )
                                    ans++;
                        }
        System.out.println(ans);
    }
}
 

C:

//DFS
public class Main{
    static int ans = 0;
    static void dfs(int x, int y) {
        if(x == 3 && y ==4)    
            ans++;
        if(x > 3 || y > 4)
            return;
        dfs(x + 1, y);
        dfs(x, y + 1);
    }
    public static void main(String args[]) {
        dfs(0, 0);
        System.out.println(ans);
    }
}

//动态规划
public class Main{
    public static void main(String args[]) {
        int[][] arr = new int[4][5];
        for(int i = 0; i < 4; ++i)
            arr[i][0] = 1;
        for(int i = 0; i < 5; ++i)
            arr[0][i] = 1;
        for(int i = 1; i < 4; ++i)
            for(int j = 1; j < 5; ++j)
                arr[i][j] = arr[i-1][j] + arr[i][j-1];
        System.out.println(arr[3][4]);
    }
}


 

D:

//模拟1
import java.math.BigDecimal;

public class Main {
    public static void main(String args[]) {
        BigDecimal s = new BigDecimal(1);
        for (int i = 1; i < 100; i++) {
            s = s.add(BigDecimal.ONE);
            s = BigDecimal.ONE.divide(s, 100, BigDecimal.ROUND_HALF_UP);// 设置精度为100
        }
        System.out.println(s.toString());
    }
}

//模拟2
import java.math.BigDecimal;

public class Main {
    public static void main(String args[]) {
        BigDecimal a = new BigDecimal(5);
        BigDecimal b = new BigDecimal(8);
        for (int i = 1; i < 300; ++i) {
            b = b.add(a);
            a = b.subtract(a);
        }
        a = a.divide(b, 100, BigDecimal.ROUND_HALF_UP);
        System.out.println(a);
    }
}
 

E:

class Rational
{
    private long ra;//分子
    private long rb;//分母
    
    private long gcd(long a, long b){//目的是找分子分母的公约数
        if(b==0) return a;
        return gcd(b,a%b);
    }
    public Rational(long a, long b){
        ra = a;
        rb = b;    
        long k = gcd(ra,rb);
        if(k>1){ //需要约分
            ra /= k;  
            rb /= k;
        }
    }
    // 加法
    public Rational add(Rational x){
        return new Rational(x.rb*ra + rb*x.ra, rb*x.rb);  //填空位置
    }
    // 乘法
    public Rational mul(Rational x){
        return new Rational(ra*x.ra, rb*x.rb);
    }
    public String toString(){
        if(rb==1) return "" + ra;
        return ra + "/" + rb;
    }
}
 

F:

static void sort(int[] x)
{
    int p = 0;
    int left = 0;
    int right = x.length-1;

    while(p<=right){
        if(x[p]<0){
            int t = x[left];
            x[left] = x[p];
            x[p] = t;
            left++;
            p++;
        }
        else if(x[p]>0){
            int t = x[right];
            x[right] = x[p];
            x[p] = t;
            right--;
        }
        else{
              p++;   //代码填空位置
        }
    }
}
 

G:

import java.util.Scanner;

public class Main {
    public static void main(String[] main) {
        int  arr[] = new int[100010];
        int min = Integer.MAX_VALUE;
        int max = -1;
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        cin.nextLine();
        for(int i = 0; i < n; i++) {
                String string = cin.nextLine();
                String[] s = string.split(" ");
                for(String t:s) {
                    int tmp = Integer.valueOf(t);
                    min = Math.min(tmp, min);
                    max = Math.max(tmp, max);
                    arr[tmp] ++;
                }
            }
        int p = 0, q = 0;
        for(int i = min; i <= max; i++) {
            if(arr[i]==2) q = i;
            if(arr[i]==0) p = i;
        }
        System.out.print(p + " " + q);
    }
}
 

H:

import java.util.Scanner;

public class Main{
    static int[] arr = new int[500010];
    static int len = 500000;
    static void init() {
        for(int i = 1; i < len; ++i)
            arr[i] = 2*i-1;
    }
    static void f() {
        for(int j = 2; j < len; ++j) {
            int k = j, key = arr[k];
            for(int i = k; i < len; ++i)
                if(i%key!=0)
                    arr[k++]=arr[i];
            if(len <= k)    break;
            len = k;
        }
    }
    public static void main(String args[]) {
        int m, n, ans = 0;
        Scanner cin = new Scanner(System.in);
        m = cin.nextInt();
        n = cin.nextInt();
        init();
        f();
        len=500000;
        for(int i = 1; i < len; ++i) {
            if(arr[i]>m&&arr[i]<n)    ans++;
            if(arr[i]>=n)    break;
        }
        System.out.println(ans);
    }
}
 

I:

import java.util.Scanner;

public class Main {
    static int ans = 0;
    static int a[] = new int[10];
    static boolean vis[] = new boolean[10];// 全排列避免重复
    static int sum(int start, int end) {
        int sum = 0;
        for (int i = start; i < end; i++)
            sum = sum * 10 + a[i + 1];
        return sum;
    }
    static void check(int a[], int n, int num) {
        int begin = 1, temp = num;
        while ((temp = temp / 10) != 0)
            begin++;
        for (int k = 1; k < begin + 1; k++) {
            int num1 = sum(0, k);
            if (num1 >= num)
                return;// 加快跳出
            for (int j = k + (n - k) / 2; j < n - 1; j++) {
                int num2 = sum(k, j);
                int num3 = sum(j, n - 1);
                if (num2 > num3 && num2 % num3 == 0
                        && num == num1 + num2 / num3) {
                    ans++;
                }
            }
        }
    }
    static void dfs(int start, int n, int num) {
        if (start == n) {
            check(a, n, num);
        } else {
            for (int i = 1; i < n; i++) {// 全排列
                if (vis[i])
                    continue;
                a[start] = i;
                vis[i] = true;
                dfs(start + 1, n, num);
                vis[i] = false;    //回溯
            }
        }
    }
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int num = cin.nextInt();
        dfs(1, 10, num);
        System.out.println(ans);
    }
}
 

J:

import java.util.Scanner;

public class Main{
    public static void main(String args[]) {
        int ans = 0, n, max, min;
        int[] arr = new int[50010];
        Scanner cin = new Scanner(System.in);
        n = cin.nextInt();
        for (int i = 0; i < n; ++i)
            arr[i] = cin.nextInt();
        for (int i = 0; i < n; ++i) {
            max = min = arr[i];
            for (int j = i; j < n; ++j) {
                max = Math.max(arr[j], max);
                min = Math.min(arr[j], min);
                if (max - min == j - i) {
                    ans ++;
                }
            }
        }
        System.out.println(ans);
    }
}
 

题目文字解析

113彩票

Tags:编程   程序员   java

很赞哦! ()

文章评论

站点信息

  • 建站时间:2018-11-25
  • 网站程序:帝国CMS7.5
  • 文章统计:71篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 网站地图XML网站地图
  • 微信公众号:扫描二维码,关注我的公众号
  • GitHub:扫描二维码,关注我的GitHub

客服在线

QQ客服

客服微信扫码

服务时间

周一至周日 9:00-21:00