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);
}
}
}
压轴大题(只能说太难了,连题都没看懂是啥意思,就不写了,反正我写不会 )