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);
}
}
}
壓軸大題(只能說太難了,連題都沒看懂是啥意思,就不寫了,反正我寫不會 )