2019校內發現杯大賽

2019校內發現杯大賽

  ”發現杯“是來到新學校,第一次與專業課有關的比賽,我是對口上來的,有一些專業基礎(相對這屆普高的好一點),但不知道爲什麼還是超級緊張。聽學長們說,去年的題全是藍橋杯上的,難度挺難的(零分的都是25名,難度可想而知),今年的題相對去年來說比較簡單( 雖然我只做了7道【其實實際上對的也沒多少】,但是也還行吧,爲啥感覺自己有點飄呢 ),廢話不多說,接招吧!

java函數的進制轉換問題

第一道
   將2019轉換成二進制數(看到這道題我徹底懵逼了,知道有個函數可以轉換,但突然想不起是啥了,最後直接選擇用筆算,直接函數解決的問題,我竟然。。。哎,只能怪技術不到家啊

//十進制轉換二進制
System.out.println(Integer.toBinaryString(2019));

  當然還有幾種進制轉換的函數,再補充一下吧🤭

二進制、八進制、十六進制轉換爲十進制

//二進制轉十進制
System.out.println(Integer.valueOf("11111100011",2));
//八進制轉十進制
System.out.println(Integer.valueOf("876",8));
//十六進制轉十進制
System.out.println(Integer.valueOf("FFFF",16));

十進制轉八進制、十六進制

//十進制轉八進制
System.out.println(Integer.toOctalString(876));
//十進制轉十六進制
System.out.println(Integer.toHexString(65535));

第二道
   1200000的所有約數,暴力破

	int count=0;
	for(int i=1;i<=Math.sqrt(1200000);i++){
		if((1200000/i)*i==1200000){
			count++;
		}
	}
	System.out.println(count*2);
}

第三道
   2019個節點的無向連通圖,最少有幾條邊(~~表示一臉懵逼,完全不知道什麼意思,不過後來聽大佬說是這個意思,真的學到了

		2019節點無向圖最少邊,
		一個點做中心,
		其他2018點圍繞在它旁邊,
		每個點對應一條邊,
		中心點沒有,
		2019-1=2018

第四題
   1-2019內含9的數量,暴力破

public class Main{
public static void main(String[] args) {
		// TODO Auto-generated method stub
		int count=0;
		for(int i=0;i<=2019;i++){
				if(check(i)){
					count++;
				}
			}
			System.out.println(count);
		}
public static boolean check(int n){
		while(n>0){
			if(n%10==9)return true;
			n/=10;
		}
		return false;
	}
}

第五題
   求字符串中元輔音字母的數量,暴力破

import java.util.*;
public class Main{
	public static void main(String[]args) {
		Scanner scan=new Scanner(System.in);
		String str=scan.nextLine();
		int count=0;
		for(int i=0;i<str.length();i++) {
			char a=str.charAt(i);
			if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u') {
				count++;
			}
		}
		System.out.println(count);
		System.out.println(str.length()-count);
	}
}

第六題
   有n個數,求其中任意兩個數組成m的倍數的倍數對有多少個?(暴力破)

import java.util.*;
public class Main{
	public static void main(String[]args) {
		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		int m=scan.nextInt();
		int count=0;
		int[]number=new int[n];
		for(int i=0;i<n;i++) {
			number[i]=scan.nextInt();
		}
		for(int i=0;i<n;i++) {
			for(int j=n-1;j>i;j--) {
				if((number[i]+number[j])%m==0) {
					count++;
				}
			}
		}
		System.out.println(count);
	}
}

第七題
   找出1~n內各個位上沒有重複數字的個數(暴力破)

import java.util.Scanner
public class Main{
	public static void main(String[]args) {
		Scanner scan=new Scanner(System.in);
		int count=0;
		int n=scan.nextInt();
		for(int i=1;i<=n;i++) {
			if(check(i))count++;
		}
		System.out.println(count);
	}
	public static boolean check(int a) {
		int[]array=new int[10];
		while(a>0) {
			array[a%10]++;
			a/=10;
		}
		for(int j=0;j<10;j++) {
			if(array[j]>1)return false;
		}
		return true;
	}
}

第八題
   梅花樁 :從(1,1)走到(m,n),最大移動距離爲d,求最少移動次數(說實話這道題是真沒看懂,不知道它到底啥意思,想了好久不會就放棄了

第九題
   花店運花 nm矩陣分成兩部分n(m-x)和n*x(暴力求解)
(這種方法不一定對,只不過我試了幾個答案是對的而已)

import java.util.*;
public class Main{
	public static void main(String[]args) {
		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		int m=scan.nextInt();
		int[][]a=new int[n][m];
		for(int i=0;i<n;i++) {
			for(int j=0;j<m;j++) {
				a[i][j]=scan.nextInt();
			}
		}
		int[]sum=new int[m];
		int s=0;
		//求出每列花的重量和
		for(int i=0;i<m;i++) {
			s=0;
			for(int j=0;j<n;j++) {
				s=s+a[j][i];
			}
			sum[i]=s;
		}
		//將第一列的花作爲x(第一輛車的花)
		int x=sum[0];
		//同樣的將最後一列的花作爲y(第二輛車的花)
		int y=sum[m-1];
		int k,r;
		for(k=m-2;k>0;k--) {
			for(r=1;r<=k;r++) {
				//比較如果x<y,則讓第二列放入第一輛車...
				if(x<y) {
					x=x+sum[r];
				}
				else {
					break;
				}
			}
			if(r<=k) {
			//如果x>y則說明第一輛車花的重量大於第二輛車
			//把倒數第二列花放入第二輛車...以此類推
				y=y+sum[k];
			}
			if(y>x&&r+1>k) {
				System.out.println(y-x);
				break;
			}
			if(r==k) {
				break;
			}
		}
		if(x>y) {
			System.out.println(x-y);
		}			
	}
}

  壓軸大題(只能說太難了,連題都沒看懂是啥意思,就不寫了,反正我寫不會

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章