第一题:
2019的二进制
package lq;
public class A {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(2019));
}
}
第二题:
1200000的所有约数,暴力破
package lq;
import java.util.Scanner;
public class B {
public static void main(String[] args) {
int count=0;
for(int i=1;i<=Math.sqrt(1200000);i++){
if((1200000/i)*i==1200000){
count++;
}
}
System.out.println(count*2);
System.out.println(Math.sqrt(1200000));
}
}
第三题:
2019节点无向图最少边,
一个点做中心,
其他2018点围绕在它旁边,
每个点对应一条边,
中心点没有,
2019-1=2018
第四题:
1-2019内含9的数量,暴力破
package lq;
public class D {
public static int count=0;
public static boolean check(int n){
while(n>0){
if(n%10==9)return true;
n/=10;
}
return false;
}
public static void main(String[] args) {
for(int i=0;i<=2019;i++){
if(check(i)){
count++;
}
}
System.out.println(count);
}
}
第五题:
求字符串中元辅音字母的数量,暴力破
package lq;
import java.util.Scanner;
public class E {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
char c[]=s.toCharArray();
int y=0,f=0;
for(int i=0;i<c.length;i++){
if(c[i]=='a'||c[i]=='e'||c[i]=='i'||c[i]=='o'||c[i]=='u')y++;
else f++;
}
System.out.println(y);
System.out.println(f);
}
}
第六题:
有n个数,求其中任意两个数组成m的倍数的倍数对有多少个?
暴力破
package lq;
import java.util.Scanner;
public class F {
public static void main(String[] args) {
int count=0;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int arr[]=new int [n];
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
arr[i]%=m;
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(arr[i]+arr[j]==0||arr[i]+arr[j]==m){
count++;
}
}
}
System.out.println(count);
}
}
第七题:
找出1~n内各个位上没有重复数字的个数
暴力破
package lq;
import java.util.Scanner;
public class G {
public static boolean check(int i){
int arr[]=new int[10];
while(i>0){
arr[i%10]++;
i/=10;
}
for(int j=0;j<10;j++)
if(arr[j]>1) return false;
return true;
}
public static void main(String[] args) {
int count=0;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for(int i=1;i<=n;i++)
if(check(i)) count++;
System.out.println(count);
}
}
第八题:
梅花桩
从(1,1)走到(m,n),最大移动距离为d,求最少移动次数
dfs深搜暴力解;
package lq;
import java.util.Scanner;
public class H {
public static int min=Integer.MAX_VALUE;
public static int n,m;
public static double d;
public static void dfs(int x,int y,int step){
if(x>n||y>m||step>min){
return;
}else if(x==n&&y==m){
min=min<step?min:step;
}else{
for(int i=0;i<=d;i++){
for(int j=0;j<=d;j++){
if((i*i+j*j)<=(d*d)&&(i*i+j*j)>0){
dfs(x+i,y+j,step+1);
}
}
}
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
m=sc.nextInt();
d=sc.nextDouble();
dfs(1,1,0);
System.out.println(min);
}
}
第九题:
花店运花
nm矩阵分成两部分
n(m-x)和n*x;
暴力求解
package lq;
import java.util.Scanner;
public class I {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
long mi=200000000L;
int cur=0;
int sum=0;
int n=sc.nextInt(),m=sc.nextInt();
int arr[][]=new int[n][m];
int ans[]=new int[m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
arr[i][j]=sc.nextInt();
sum+=arr[i][j];
ans[j]+=arr[i][j];
}
}
for(int i=0;i<ans.length;i++){
cur+=ans[i];
mi=mi<Math.abs(sum-cur-cur)?mi:Math.abs(sum-cur-cur);
}
System.out.println(mi);
}
}
第十题:
我有点质疑这个题,当然,极有可能是我做错了,
题意是len=两点间距离(考虑坐标和高度);
可是我考虑高度过样例是错的
而不考虑高度,仅考虑坐标,求解样例的答案确是正确的,
emmm。。可能错了,
写下代码吧。
package lq;
import java.util.Scanner;
public class J {
public static double maxlen=-1;
public static double buf[][];
public static void dfs(int cur,double len,boolean b[]){
for(int j=0;j<buf[cur].length;j++)
if(buf[cur][j]>0){
b[j]=true;
dfs(j,len+buf[cur][j],b);
}
boolean ok=true;
for(int i=0;i<b.length;i++)
if(!b[i])ok=false;
if(ok)maxlen=maxlen>len?maxlen:len;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int node[][]=new int[n][3];//x,y,h
for(int i=0;i<n;i++)
for(int j=0;j<3;j++)
node[i][j]=sc.nextInt();
int d=sc.nextInt();
double xyz=-1;
buf=new double[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
xyz=Math.sqrt((node[i][0]-node[j][0])*(node[i][0]-node[j][0])+(node[i][1]-node[j][1])*(node[i][1]-node[j][1]));
if(xyz<=d&&node[i][2]>node[j][2])buf[i][j]=xyz;
}
boolean b[]=new boolean [n];
b[0]=true;dfs(0,0,b);
System.out.println(String.format("%.2f",maxlen));
}
}