Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
ProgramLight | 6b370e541c |
|
@ -0,0 +1,87 @@
|
|||
package LanQiaoOJ;
|
||||
/*1-输入两个正整数 A,B,请你计算 A+B,并输出。*/
|
||||
import java.util.Scanner;
|
||||
/*
|
||||
public class LanqiaoOJ_0001 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
while(sc.hasNext()) {
|
||||
int a=sc.nextInt();
|
||||
int b=sc.nextInt();
|
||||
System.out.println(a+b);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
//2-输入n表示n组数,每组输入两个数,请计算出每组数的和。
|
||||
/*
|
||||
public class LanqiaoOJ_0001 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
while(sc.hasNext()) {
|
||||
int n=sc.nextInt();//读入有几组测试数据
|
||||
for(int i=0;i<n;i++) {
|
||||
int a=sc.nextInt();
|
||||
int b=sc.nextInt();
|
||||
System.out.println(a+b);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
/*
|
||||
* 3-输入包含多个测试用例。每个测试用例都包含一个整数N,然后N个整数在同一行中。每个整数以及同一行整数之和都在int范围内
|
||||
以0开始的测试用例会终止输入,并且不会处理该测试用例。
|
||||
输出
|
||||
对于每组输入整数,您应该为每行输入数据输出一行,在这行中输出它们的总和*/
|
||||
/*
|
||||
public class LanqiaoOJ_0001 {
|
||||
i
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
while(sc.hasNext()) {
|
||||
int n=sc.nextInt();//读入有几组测试数据
|
||||
if(n==0)
|
||||
break;
|
||||
int sum=0;//用来记录每次累加的值
|
||||
for(int i=0;i<n;i++) {
|
||||
sum+=sc.nextInt();//循环n次,每次读入一个正数,累加到sum
|
||||
}
|
||||
System.out.println(sum);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* 4-输入
|
||||
* 在第一行包含一个整数N,然后跟随N行。每行以一个整数M开始,然后M个整数跟在同一行中。
|
||||
输出
|
||||
对于每组输入整数,您应该在一行中输出它们的总和,并且在输入中为每行输出一行输出。每组数据间用空行隔开
|
||||
*/
|
||||
public class AB问题 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
while(sc.hasNext()) {
|
||||
int n=sc.nextInt();//读入每组组测试数据有几个
|
||||
int t=sc.nextInt();//读入有几组测试数据
|
||||
int sum=0;//用来记录每次累加的值
|
||||
for(int j=0;j<t;j++) {
|
||||
for(int i=0;i<n;i++) {
|
||||
sum+=sc.nextInt();//循环n次,每次读入一个正数,累加到sum
|
||||
}
|
||||
System.out.println(sum);
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 题目描述
|
||||
实现一个算法得到乌托邦树的高度。介绍如下:
|
||||
乌托邦树每年经历2个生长周期。每年春天,它的高度都会翻倍。每年夏天,它的高度都会增加1米。
|
||||
对于一颗在春天开始时种下的高1米的树,问经过指定周期后,树的高度为多少。*/
|
||||
public class 乌托邦树 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int t=sc.nextInt();
|
||||
//使用高精度
|
||||
/*BigInteger h=new BigInteger("1");
|
||||
for(int i=0;i<t;i++) {
|
||||
if(i%2==0)
|
||||
h=h.multiply(new BigInteger("2"));
|
||||
else
|
||||
h=h.add(new BigInteger("1"));
|
||||
|
||||
}*/
|
||||
int h=1;
|
||||
for(int i=0;i<t;i++) {
|
||||
if(i%2==0)
|
||||
h=h*2;
|
||||
else
|
||||
h=h+1;
|
||||
}
|
||||
System.out.print(h);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
/*
|
||||
* 问题描述
|
||||
本题为填空题,只需要算出结果后,在代码中使用输出语句将
|
||||
所填结果输出即可。
|
||||
九进制正整数(2022)9转换成十进制等于多少?*/
|
||||
public class 九进制转十进制 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String n=new BigInteger("2022",9).toString(10);
|
||||
System.out.print(n);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
|
|
@ -0,0 +1,20 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class 二进制中1的个数2 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
/*
|
||||
* 获得二进制方法还可用
|
||||
* 1-BigInteger
|
||||
* 2-toString———返回小写——toUpperCase()--返回大写
|
||||
* 3-bitCount
|
||||
* Integer.person*/
|
||||
int count=Integer.bitCount(n);
|
||||
System.out.print(count);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package LanQiaoOJ;
|
||||
//使用按位运算符
|
||||
import java.util.Scanner;
|
||||
|
||||
public class 二进制中1的个数3 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
int count=0;
|
||||
while(n>0) {
|
||||
if((n&1)==1)
|
||||
count++;
|
||||
n>>=1;
|
||||
}
|
||||
System.out.print(count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
|
||||
输入描述
|
||||
输入一行包含一个单词,单词只由小写英文字母组成。对于所有的评测用例,输入的单词长度不超过 1000。
|
||||
输出描述
|
||||
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。
|
||||
如果有多个字母出现的次数相等,输出字典序最小的那个。
|
||||
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数*/
|
||||
public class 单词分析 {
|
||||
static int N=1000;
|
||||
static int [] a =new int [N];
|
||||
public static void main(String [] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
String s=sc.next();
|
||||
|
||||
for(int i=0;i<s.length();i++) {
|
||||
char c=s.charAt(i);
|
||||
a[c-'a']++;
|
||||
}
|
||||
|
||||
char ch='a';
|
||||
int max=0;
|
||||
for(int i=0;i<26;i++) {
|
||||
if(a[i]>max) {
|
||||
max=a[i];
|
||||
ch=(char)(i+'a');
|
||||
}
|
||||
|
||||
}
|
||||
System.out.println(ch);
|
||||
System.out.println(max);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
public class 卡牌 {
|
||||
/*题目描述
|
||||
小蓝有很多数字卡片,每张卡片上都是数字0到9。
|
||||
小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
|
||||
小蓝想知道自己能从1拼到多少。
|
||||
例如,当小蓝有30张卡片,其中0到9各3张,则小蓝可以拼出1到10
|
||||
但是拼11时卡片1已经只有一张了,不够拼出11。
|
||||
现在小蓝手里有0到9的卡片各2021张,共20210张,请
|
||||
问小蓝可以从1拼到多少?
|
||||
提示:建议使用计算机编程解决问题。*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package LanQiaoOJ;
|
||||
/*含2天数
|
||||
* 题目描述
|
||||
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
|
||||
小蓝特别喜欢 2,今年是公元 2020年,他特别高兴,因为每天日历上都可以看到 2。
|
||||
如果日历中只显示年月日,请问从公元 1900 年 1 月1 日到公元 9999 年 12 月 31 日,一共有多少天日历上包含
|
||||
2。即有多少天中年月日的数位中包含数字 2。
|
||||
*/
|
||||
public class 含2天数 {
|
||||
//代表月份天数,从下标为1开始
|
||||
static int[] w= {0,31,28,31,30,31,30,31,31,30,31,30,31};
|
||||
//代表年月日
|
||||
static int y=1900,m=1,d=1;
|
||||
|
||||
public static void main(String[] args) {
|
||||
int count=0; //统计含2天数
|
||||
//循环结束条件为y=9999&&m=12&&d=31
|
||||
while(y!=9999||m!=12||d!=31) {
|
||||
//判断是否为闰年
|
||||
if(y%400==0||y%4==0&&y%100!=0)
|
||||
w[2]=29;
|
||||
else
|
||||
w[2]=28;
|
||||
//判断是否是我们要求的日期
|
||||
if(check())
|
||||
count++;
|
||||
//日期变更
|
||||
d++;
|
||||
if(d>w[m]) {
|
||||
m++;
|
||||
d=1;
|
||||
}
|
||||
if(m>12) {
|
||||
y++;
|
||||
m=1;
|
||||
}
|
||||
}
|
||||
System.out.println(count+1);
|
||||
}
|
||||
|
||||
static boolean check() {
|
||||
// TODO Auto-generated method stub
|
||||
//不能直接操作y,因为其是一个全局变量
|
||||
int a=y;
|
||||
while(a>0) {
|
||||
if(a%10==2)
|
||||
return true;
|
||||
a/=10;
|
||||
}
|
||||
int b=m;
|
||||
while(b>0) {
|
||||
if(b%10==2)
|
||||
return true;
|
||||
b/=10;
|
||||
}
|
||||
int c=d;
|
||||
while(c>0) {
|
||||
if(c%10==2)
|
||||
return true;
|
||||
c/=10;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package LanQiaoOJ;
|
||||
/*啤酒与饮料
|
||||
* 题目描述
|
||||
啤酒每罐 2.3元,饮料每罐 1.9元。小明买了若干啤酒和饮料,一共花了 82.3元。
|
||||
我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。*/
|
||||
public class 啤酒与饮料 {
|
||||
public static void main(String[] args) {
|
||||
int x,y;//分别表示啤酒与饮料的数量
|
||||
for(x=1;x<35;x++)
|
||||
for(y=1;y<43;y++) {
|
||||
if(x<y&&2.3*x+1.9*y==82.3) {
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 总结:
|
||||
* 在做本题时,首先想到的是想用数学方法解决,建立等式,但是,在本题中,
|
||||
* 如果采用一般的数学思维,很有可能做不出来,因为从题干中只能得到一个等式和一个不等式,无法解决。
|
||||
* 此题从编程角度看,实际上非常简单,两个嵌套循环遍历,再用一个if语句判断,便可直接得出结果。
|
||||
*/
|
|
@ -0,0 +1,30 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 问题描述
|
||||
请找到一个大于2022的最小数,这个数转换成十六进制之
|
||||
后,所有的数位(不含前导0)都为字母(A到F)。
|
||||
请将这个数的十进制形式作为答案提交。*/
|
||||
public class 字母数 {
|
||||
public static void main(String[] args) {
|
||||
//在此输入您的代码...
|
||||
for(int i=2022;true;i++){
|
||||
if(check(i)){
|
||||
System.out.print(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
static boolean check(int i){
|
||||
while(i/16>0){
|
||||
if(i%16>=10&&i%16<=15){
|
||||
i/=16;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(i>=10&&i<=15) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Scanner;
|
||||
|
||||
/*给定一个只包含大写字母的字符串 S, 请你输出其中出现次数最多的字符。
|
||||
如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。
|
||||
输入格式
|
||||
一个只包含大写字母的字符串 S.
|
||||
输出格式
|
||||
若干个大写字母,代表答案。 */
|
||||
public class 字符统计 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
String s=sc.next();
|
||||
//需要一个东西去统计每个字符出现的次数
|
||||
HashMap<Character,Integer>hashMap=new HashMap<>();
|
||||
for(int i=0;i<s.length();i++) {
|
||||
char c=s.charAt(i);
|
||||
hashMap.put(c, hashMap.getOrDefault(c,0)+1);
|
||||
}
|
||||
//统计出现最多的字符
|
||||
int max=0;
|
||||
//用来存答案
|
||||
ArrayList<Character> list=new ArrayList<>();
|
||||
for(char key:hashMap.keySet()) {
|
||||
int x=hashMap.get(key);
|
||||
if(x>max) {
|
||||
list.clear();
|
||||
list.add(key);
|
||||
max=x;
|
||||
}else if(x==max) {
|
||||
list.add(key);
|
||||
}
|
||||
}
|
||||
for(char c:list) {
|
||||
System.out.print(c);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class 字符统计2 {
|
||||
static int[] a=new int[26];
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
String s=sc.next();
|
||||
//需要一个东西去统计每个字符出现的次数
|
||||
|
||||
for(int i=0;i<s.length();i++) {
|
||||
//记录出现最多次字符的出现次数+-
|
||||
char c=s.charAt(i);
|
||||
a[c-'A']++;
|
||||
}
|
||||
//存答案
|
||||
ArrayList<Integer>list=new ArrayList<>();
|
||||
int max=0;
|
||||
for(int i=0;i<26;i++) {
|
||||
if(a[i]>max) {
|
||||
list.clear();
|
||||
max=a[i];
|
||||
list.add(i);
|
||||
}else if(a[i]==max) {
|
||||
list.add(i);
|
||||
}
|
||||
}
|
||||
for(int i:list) {
|
||||
System.out.print((char)(i+'A'));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package LanQiaoOJ;
|
||||
/*完全日期*/
|
||||
/*如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。
|
||||
例如:2021 年 6 月 5 日的各位数字之和为 2+0+2+1+6+5=16而 16 是一个完全平方数,它是 4 的平方。
|
||||
所以 2021 年 6 月 5 日是一个完全日期。
|
||||
例如:2021 年 6 月 23 日的各位数字之和为 2+0+2+1+6+2+3=16,是一个完全平方数。所以 2021 年 6 月 23 日也是一个完全日期。
|
||||
请问,从 2001 年 1 月1 日到 2021 年 12 月 31 日中,一共有多少个完全日期?*/
|
||||
public class 完全日期 {
|
||||
//每月天数,下标从1开始
|
||||
static int [] w= {0,31,28,31,30,31,30,31,31,30,31,30,31};
|
||||
//年月日
|
||||
static int y=2001,m=1,d=1;
|
||||
|
||||
public static void main(String[] args) {
|
||||
int count=0;
|
||||
//循环结束条件
|
||||
while(y!=2021||m!=12||d!=31) {
|
||||
//判断是否闰年——>判断2月天数
|
||||
if(y%400==0||y/400==0&&y/100!=0)
|
||||
w[2]=29;
|
||||
else
|
||||
w[2]=28;
|
||||
//判断是否完全平方
|
||||
if(check())
|
||||
count++;
|
||||
//日期变更
|
||||
d++;
|
||||
if(d>w[m]) {
|
||||
m++;
|
||||
d=1;
|
||||
}
|
||||
if(m>12) {
|
||||
y++;
|
||||
m=1;
|
||||
}
|
||||
}
|
||||
System.out.print(count);
|
||||
}
|
||||
static boolean check() {
|
||||
//统计
|
||||
int sum=0;
|
||||
//y为全局变量,不可直接改动
|
||||
int a=y;
|
||||
//得出年份各数字之和
|
||||
while(a>0) {
|
||||
sum+=a%10;
|
||||
a/=10;
|
||||
}
|
||||
int b=m;
|
||||
while(b>0) {
|
||||
sum+=b%10;
|
||||
b/=10;
|
||||
}
|
||||
int c=d;
|
||||
while(c>0) {
|
||||
sum+=c%10;
|
||||
c/=10;
|
||||
}
|
||||
//判断是否为平方数
|
||||
int mark=(int)Math.sqrt(sum);
|
||||
return mark*mark==sum;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*题目描述
|
||||
实现一个算法在数组中找到 3 个数字的最大乘积。介绍如下:
|
||||
例如数组 [5, -2, 3, 1, -1, 4] 中 3 个数字的最大乘积为 60。
|
||||
输入描述
|
||||
第一行为数字N (3≤N≤1000),表示数组元素的个数。
|
||||
第二行为数组元素 Ai,−1000≤Ai≤1000。
|
||||
输出描述
|
||||
输出一行,为 3 个数字的最大乘积。
|
||||
*/
|
||||
|
||||
public class 寻找三个数的最大乘积 {
|
||||
static int N=1010;
|
||||
static int []a=new int [N];
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
for(int i=0;i<n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
}
|
||||
int ans=(int)-1e9;//考虑数组中有负数的情况——极限情况
|
||||
for(int i=0;i<n;i++) {
|
||||
for(int j=i+1;j<n;j++) {
|
||||
for(int k=j+1;k<n;k++) {
|
||||
ans=Math.max(ans, a[i]*a[j]*a[k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(ans);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class 寻找三个数的最大乘积2 {
|
||||
static int N=1010;
|
||||
static int []a=new int [N];
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
for(int i=0;i<n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
|
||||
//如果都是整数——贪心算法——选出最大三个
|
||||
Arrays.sort(a,0,n);//数组排序算法————时间复杂度:nlogn
|
||||
int ans=a[n-1]*a[n-2]*a[n-3];
|
||||
ans=Math.max(ans, a[0]*a[1]*a[n-1]);
|
||||
System.out.print(ans);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Ñ°ÕÒÈý¸öÊýµÄ×î´ó³Ë»ý3 {
|
||||
static int N=1010;
|
||||
static int []a=new int [N];
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
ArrayList<Integer>list=new ArrayList<>();
|
||||
for(int i=0;i<n;i++) {
|
||||
int x=sc.nextInt();
|
||||
list.add(x);
|
||||
}
|
||||
Collections.sort(list);
|
||||
int ans=list.get(n-1)*list.get(n-2)*list.get(n-3);
|
||||
ans=Math.max(ans, list.get(0)*list.get(1)*list.get(n-1));
|
||||
System.out.print(ans);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 问题描述
|
||||
小蓝很喜欢科研,他最近做了一个实验得到了一批实验
|
||||
数据,一共是两百万个正整数。
|
||||
如果按照预期,所有的实验数据x都应该满足10^7≤x≤10^8。
|
||||
但是做实验都会有一些误差,会导致出现一些预期外的
|
||||
数据,这种误差数据y的范围是10^3≤y≤10^12
|
||||
由于小蓝做实验很可靠,所以他所有的实验数据中
|
||||
99.99%以上都是符合预期的。
|
||||
小蓝的所有实验数据都在primes.txt中,现在他想统计
|
||||
这两百万个正整数中有多少个是质数,你能告诉他吗?*/
|
||||
public class 小蓝做实验 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*小蓝吃糖果
|
||||
* 题目描述
|
||||
小蓝有 n 种糖果,每种数量已知。小蓝不喜欢连续 2次吃同样的糖果。问有没有可行的吃糖方案。
|
||||
输入描述
|
||||
第一行是整数 n(0<n<1000000)。
|
||||
第二行包含 n 个数,表示 n 种糖果的数量mi,0<mi<1000000。
|
||||
输出描述
|
||||
输出一行,包含一个 Yes 或 no。 */
|
||||
public class 小蓝吃糖果 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc= new Scanner(System.in);
|
||||
int n=sc.nextInt();//1e6
|
||||
//ans表示统计所有的糖果数量
|
||||
long ans=0;
|
||||
//统计最大糖果数量
|
||||
int max=0;
|
||||
for(int i=0;i<n;i++) {
|
||||
int x=sc.nextInt();
|
||||
ans=ans+x;
|
||||
max=Math.max(x, max);
|
||||
}
|
||||
//L表示long类型
|
||||
System.out.print(max*2L>ans?"No":"Yes");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
|
||||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 题目描述
|
||||
小蓝给学生们组织了一场考试,卷面总分为100分,每个
|
||||
学生的得分都是一个0到100的整数。
|
||||
请计算这次考试的最高分、最低分和平均分。
|
||||
输入描述
|
||||
输入的第一行包含一个整数n(1≤n≤104),表示考试
|
||||
人数。
|
||||
接下来行,每行包含一个0至100的整数,表示一个学
|
||||
生的得分。
|
||||
输出描述
|
||||
输出三行。
|
||||
第一行包含一个整数,表示最高分。
|
||||
第二行包含一个整数,表示最低分。
|
||||
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。*/
|
||||
public class 成绩分析 {
|
||||
static int [] a =new int [10000];
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
double s=sc.nextInt();
|
||||
int sum=0,max=0,min=110;
|
||||
for(int i=0;i<s;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
if(a[i]>max) {
|
||||
max=a[i];
|
||||
}
|
||||
if(a[i]<min) {
|
||||
min=a[i];
|
||||
}
|
||||
sum=sum+a[i];
|
||||
}
|
||||
double ave=sum/s;
|
||||
System.out.println(max);
|
||||
System.out.println(min);
|
||||
System.out.printf("%.2f",ave);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 题目描述
|
||||
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
|
||||
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
|
||||
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
|
||||
输入描述
|
||||
输入的第一行包含一个整数 n (1≤n≤10^4),表示考试人数。
|
||||
接下来 n行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
|
||||
输出描述
|
||||
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。*/
|
||||
public class 成绩统计 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
int [] arr=new int[n];
|
||||
int count=0,mark=0;
|
||||
|
||||
for(int i=0;i<n;i++) {
|
||||
arr[i]=sc.nextInt();
|
||||
if(arr[i]>=60){
|
||||
if(arr[i]>=85){
|
||||
mark++;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
System.out.println((Math.round(count*100)/n)+"%");
|
||||
System.out.println(Math.round((mark*100)/n)+"%");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 问题描述
|
||||
任何一个大于1的正整数都能被分解为若干个质数相
|
||||
乘,比如28=2×2×7被分解为了三个质数相乘。
|
||||
请问在区间[2333333,23333333]中有多少个正整数
|
||||
可以被分解为12个质数相乘?*/
|
||||
public class 数数 {
|
||||
static int ans=0;
|
||||
public static void main(String[] args) {
|
||||
for(int i=2333333;i<2333333;i++) {
|
||||
int t=i;
|
||||
|
||||
int x=0;
|
||||
for(int j=2;j<j/t;j++) {
|
||||
while(t%j==0) {
|
||||
x++;
|
||||
t/=j;
|
||||
}
|
||||
}
|
||||
if(t>1) {
|
||||
x++;
|
||||
}
|
||||
if(x==12)
|
||||
ans++;
|
||||
}
|
||||
System.out.print(ans);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package LanQiaoOJ;
|
||||
/*题目描述
|
||||
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
|
||||
1949 年的国庆节( 10 月 1 日)是星期六。
|
||||
今年(2012)的国庆节是星期一。
|
||||
那么,从建国到现在,有几次国庆节正好是星期日呢?
|
||||
不要求写出具体是哪些年,只要一个数目!*/
|
||||
public class 星期几 {
|
||||
//每月天数,下标从1开始
|
||||
static int [] w= {0,31,28,31,30,31,30,31,31,30,31,30,31};
|
||||
//年月日星期
|
||||
//t=0表示星期天,t=1表示星期一
|
||||
static int y=1949,m=10,d=1,t=6;
|
||||
|
||||
public static void main(String[] args) {
|
||||
int count=0;
|
||||
//循环结束条件
|
||||
while(y!=2012||m!=10||d!=1) {
|
||||
//判断是否闰年——>判断2月天数
|
||||
if(y%400==0||y/400==0&&y/100!=0)
|
||||
w[2]=29;
|
||||
else
|
||||
w[2]=28;
|
||||
//判断是否完全平方
|
||||
if(check())
|
||||
count++;
|
||||
//日期变更
|
||||
d++;
|
||||
//
|
||||
t++;
|
||||
t%=7;
|
||||
if(d>w[m]) {
|
||||
m++;
|
||||
d=1;
|
||||
}
|
||||
if(m>12) {
|
||||
y++;
|
||||
m=1;
|
||||
}
|
||||
}
|
||||
System.out.print(count);
|
||||
}
|
||||
static boolean check() {
|
||||
return m==10&&d==1&&t==0;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 问题描述
|
||||
本题为填空题,只需要算出结果后,在代码中使用输
|
||||
出语句将所填结果输出即可。
|
||||
已知今天是星期六,请问20^22天后是星期几?
|
||||
注意用数字1到7表示星期一到星期日。*/
|
||||
public class 星期计算 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
int ans=1;
|
||||
for(int i=0;i<22;i++) {
|
||||
ans*=20;
|
||||
ans%=7;
|
||||
}
|
||||
System.out.print(ans+6);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 实现一个算法寻找最大化股票交易利润的策略。介绍如下:
|
||||
股票价格每天都在变化,以数组的索表示交易日,以数组的元素表示每天的股票价格。
|
||||
可以通过买入和卖出获得利润。一天只能进行一次买入或卖出操作,一次买入加卖出操作称为一次交易次数。
|
||||
你只能交易一次,求使得利润最大的交易策略。
|
||||
输入描述
|
||||
第一行为数字N,表示共有N天。
|
||||
第二行为N个数字A,表示每天的股票价格。
|
||||
其中,1≤N,A≤104。**/
|
||||
public class 最大化交易利润 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// TODO Auto-generated method stub
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
int []a=new int[n];
|
||||
for(int i=0;i<n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
}
|
||||
//最大利润
|
||||
int ans=(int)-1e4;
|
||||
//价格最低的时候
|
||||
int min=(int)1e4;
|
||||
//循环枚举出那天卖出
|
||||
for(int i=0;i<n;i++) {
|
||||
if(i>0)
|
||||
ans=Math.max(ans, a[i]-min);
|
||||
min=Math.min(min, a[i]);
|
||||
}
|
||||
System.out.print(ans);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package LanQiaoOJ;
|
||||
/*题目描述
|
||||
给定一个数组,找到两个总和为特定值的索引。
|
||||
例如给定数组 [1, 2, 3, -2, 5, 7],给定总和 7,则返回索引 [1, 4]。
|
||||
若有多组符合情况则输出索引对中小索引最小的一组。
|
||||
输入描述
|
||||
第一行为给定数组的长度,不超过 100。
|
||||
第二行为数组元素,元素大小不超过 100(可能为负数)。
|
||||
第三行为特定值。
|
||||
输出描述
|
||||
输出一行,为两个索引值,升序输出。*/
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class 查找两个总和为特定值的索引 {
|
||||
static int N=110;
|
||||
static int [] a=new int[N];
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
for(int i=0;i<n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
}
|
||||
int target=sc.nextInt();
|
||||
for(int i=0;i<n;i++)
|
||||
for(int j=0;j<n;j++) {
|
||||
if(a[i]+a[j]==target) {
|
||||
System.out.println(i+" "+j);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class 查找两个总和为特定值的索引2 {
|
||||
static int N=110;
|
||||
static int [] a=new int[N];
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
|
||||
//key-value结构
|
||||
HashMap<Integer,Integer>map=new HashMap<>();
|
||||
for(int i=0;i<n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
map.put(a[i],i);
|
||||
}
|
||||
int target=sc.nextInt();
|
||||
for(int i=0;i<n;i++) {
|
||||
int A=a[i];
|
||||
if(map.containsKey(target-A)) {
|
||||
System.out.println(i+" "+map.get(target-A));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 问题描述
|
||||
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
|
||||
输入格式
|
||||
第一行包含一个整数n。
|
||||
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
|
||||
第三行包含一个整数a,为待查找的数。
|
||||
输出格式
|
||||
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。*/
|
||||
import java.util.Scanner;
|
||||
public class 查找整数{
|
||||
static int N=10000;
|
||||
static int [] a=new int[N];
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();//确定数组大小
|
||||
for(int i=0;i<n;i++) {
|
||||
a[i]=sc.nextInt();//将数据存入数组
|
||||
}
|
||||
int mark=0;
|
||||
int s=sc.nextInt();//要查找的数
|
||||
for(int i=0;i<a.length;i++) {
|
||||
if(a[i]==s) {
|
||||
mark=1;
|
||||
System.out.println(i+1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(mark==0) {
|
||||
System.out.println(-1);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
/*题目描述
|
||||
你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,
|
||||
大臣说:请在第 1 个棋盘格放 1 粒麦子,在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子,
|
||||
在第 4 个棋盘格放 8 粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 64 格)。
|
||||
请你借助计算机准确地计算,到底需要多少粒麦子。*/
|
||||
public class 棋盘放麦子 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
//总数
|
||||
BigInteger ans=new BigInteger("1");
|
||||
//每格的个数
|
||||
BigInteger a=new BigInteger("1");
|
||||
|
||||
for(int i=2;i<=64;i++) {
|
||||
a=a.multiply(new BigInteger ("2"));
|
||||
ans=ans.add(a);
|
||||
}
|
||||
System.out.print(ans);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package LanQiaoOJ;
|
||||
//武功秘籍
|
||||
import java.util.Scanner;
|
||||
/*
|
||||
* 书的第 10 页和第 11 页在同一张纸上,但第 11 页和第 12 页不在同一张纸上。
|
||||
小明只想练习该书的第 81页到第 92 页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走?*/
|
||||
public class 武功秘籍 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int p1=sc.nextInt();
|
||||
int p2=sc.nextInt();
|
||||
int count;
|
||||
if(p1%2!=0&&p2%2==0) {
|
||||
count=(p2-p1)/2+2;
|
||||
}else {
|
||||
count=(p2-p1)/2+1;
|
||||
}
|
||||
System.out.println(count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 问题描述
|
||||
给定n个整数a1,a2,··,am,求它们两两相乘再
|
||||
相加的和,即:
|
||||
S=a1·a2+a1·a3+·+a1·am+a2·a3+
|
||||
输入格式
|
||||
输入的第一行包含一个整数几。
|
||||
第二行包含n个整数a1,a2,··,an*/
|
||||
//方法:合并化解:S1=a1(a2+a3+...+an-1)
|
||||
public class 求和 {
|
||||
static int N=200010;
|
||||
static long[]a=new long[N];
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
for(int i=1;i<=n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
}
|
||||
//最终结果
|
||||
long ans=0;
|
||||
//记录i-1个数的和
|
||||
long sum=0;
|
||||
for(int i=1;i<=n;i++) {
|
||||
ans+=a[i]*sum;
|
||||
sum+=a[i];
|
||||
}
|
||||
//时间复杂度为O(n)
|
||||
System.out.print(ans);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
//方法:暴力破解——时间复杂度为O(n^2)
|
||||
//范围为2e5*2e5=4e10 超时
|
||||
public class 求和2 {
|
||||
static int N=200010;
|
||||
static long[]a=new long[N];
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
for(int i=1;i<n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
}
|
||||
long ans=0;
|
||||
for(int i=1;i<=n;i++) {
|
||||
for(int j=i+1;j<=n;j++) {
|
||||
ans+=a[i]+a[j];
|
||||
}
|
||||
}
|
||||
System.out.println(ans);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 给定一个数字N,请你求出它的所有质因子。
|
||||
输入描述
|
||||
输入仅一行包含为一个整数N。
|
||||
1≤W≤10^12。*/
|
||||
public class 求解质因子 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
long n=sc.nextLong();
|
||||
for(long i=2;i<n/i;i++) {
|
||||
//判断是否为质因子
|
||||
if(n%i==0) {
|
||||
System.out.print(i+" ");
|
||||
//将n除尽
|
||||
while(n%i==0)n/=i;
|
||||
}
|
||||
}
|
||||
if(n>1)
|
||||
System.out.print(n);
|
||||
}
|
||||
}
|
||||
/*此方法蓝桥OJ上无法通过,超时——暴力破解
|
||||
* public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
long n=sc.nextLong();
|
||||
|
||||
for(long i=2;i<n;i++) {
|
||||
if(n%i==0&&check(i)) {
|
||||
System.out.print(i+" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
static Boolean check(long x) {
|
||||
for(long i=2;i<=x/i;i++) {
|
||||
if(x%i==0)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}*/
|
|
@ -0,0 +1,40 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 问题描述
|
||||
满足N!的末尾恰好有K个0的最小的N是多
|
||||
少?
|
||||
如果这样的N不存在输出一1。
|
||||
输入格式
|
||||
一个整数K。
|
||||
输出格式
|
||||
一个整数代表答案。*/
|
||||
public class 求阶乘 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
long k=sc.nextInt();//0的个数
|
||||
for(long i=2;i<1e18;i++) {
|
||||
if(Fun(i)==k) {
|
||||
System.out.print(i);
|
||||
break;
|
||||
}else if(Fun(i)>k) {
|
||||
System.out.print(-1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
public static long Fun(long n) {
|
||||
long ans=0;
|
||||
while(n>0) {
|
||||
//因数中有1个5就有1个0,即计算5的个数
|
||||
ans=ans+n/5;
|
||||
n=n/5;
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package LanQiaoOJ;
|
||||
/*熊怪吃核桃
|
||||
森林里有一只熊怪,很爱吃核桃。不过它有个习惯,每次都把找到的核桃分成相等的两份,
|
||||
* 吃掉一份,留一份。如果不能等分,熊怪就会扔掉一个核桃再分。
|
||||
* 第二天再继续这个过程,直到最后剩一个核桃了,直接丢掉。
|
||||
有一天,熊怪发现了 1543 个核桃,请问,它在吃这些核桃的过程中,一共要丢掉多少个核桃。*/
|
||||
public class 熊怪吃核桃 {
|
||||
public static void main(String[] args) {
|
||||
int count=0;//表示丢掉的核桃数
|
||||
for(int n=1543;n>0;n/=2) {
|
||||
if(n%2!=0) {
|
||||
n--;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
System.out.println(count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 问题描述
|
||||
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
|
||||
输出格式
|
||||
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行
|
||||
*/
|
||||
public class 特殊的数字 {
|
||||
public static void main(String[] args) {
|
||||
int a,b,c;//表示这个特殊的数的个位、十位、百位
|
||||
for(int num=100;num<1000;num++) {
|
||||
a=num%10;//对10求余,得到个位的值
|
||||
b=num%100/10;//先对100求余,再对10取整,得到十位数上的值
|
||||
c=num/100;//对100取整,得到百位数上的值
|
||||
if(num==a*a*a+b*b*b+c*c*c) {
|
||||
System.out.print(num+" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Scanner;
|
||||
import java.util.Map;
|
||||
|
||||
/*用杂志拼接信件
|
||||
*
|
||||
* 杂志和信件均由字符串构成,对于给定的杂志和信件,确定信件是否可以由杂志上的字符构成。
|
||||
例如杂志为 ab,信件为 aa,则不能构成。杂志为 aab,信件为 aa,则可以构成。
|
||||
输入描述
|
||||
输入两行字符串,长度均不超过 100。
|
||||
第一行为杂志字符串,第二行为信件字符串。
|
||||
输出描述
|
||||
输出一行,若信件可由杂志构成则输出 YES,否则输出 NO。
|
||||
示例
|
||||
输入
|
||||
ab
|
||||
aa
|
||||
输出
|
||||
NO */
|
||||
|
||||
public class 用杂志拼接信件 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
String s=sc.next(); //杂志
|
||||
String t=sc.next(); //信件
|
||||
Map<Character,Integer>ms=new HashMap<>();
|
||||
Map<Character,Integer>mt=new HashMap<>();
|
||||
|
||||
for(int i=0;i<s.length();i++) {
|
||||
char c=s.charAt(i);
|
||||
ms.put(c,ms.getOrDefault(c, 0)+1);
|
||||
}
|
||||
for(int i=0;i<s.length();i++) {
|
||||
char c=s.charAt(i);
|
||||
mt.put(c, mt.getOrDefault(c,0)+1);
|
||||
}
|
||||
for(char i='a';i<'z';i++) {
|
||||
if(ms.getOrDefault(i, 0)<mt.getOrDefault(i, 0)) {
|
||||
System.out.print("NO");
|
||||
return;
|
||||
}
|
||||
System.out.print("YES");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class 用杂志拼接信件2 {
|
||||
static int[] ms=new int[26],mt=new int [26];
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
//杂志
|
||||
String s=sc.next();
|
||||
//信件
|
||||
String t=sc.next();
|
||||
for(int i=0;i<s.length();i++) {
|
||||
char c=s.charAt(i);
|
||||
//统计字符个数
|
||||
ms[c-'a']++;
|
||||
}
|
||||
for(int i=0;i<t.length();i++) {
|
||||
char c=t.charAt(i);
|
||||
mt[c-'a']++;
|
||||
}
|
||||
for(int i=0;i<26;i++) {
|
||||
if(ms[i]<mt[i]) {
|
||||
System.out.println("NO");
|
||||
return;
|
||||
}
|
||||
System.out.print("YES");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class È·¶¨Ò»¸öÊýÊÇ·ñΪ2µÄÃÝ {
|
||||
|
||||
public static void main(String[] args) {
|
||||
/*System.out.println(Integer.toString(2,2));
|
||||
System.out.println(Integer.toString(4,2));
|
||||
System.out.println(Integer.toString(6,2));
|
||||
System.out.println(Integer.toString(8,2));
|
||||
System.out.println(Integer.toString(16,2));
|
||||
System.out.println(Integer.toString(32,2));*/
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
if(n==1) {
|
||||
System.out.print("NO");
|
||||
return;
|
||||
}
|
||||
System.out.print(Integer.bitCount(n)==1?"YES":"NO");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package LanQiaoOJ;
|
||||
/*积分之谜
|
||||
* 题目描述
|
||||
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
|
||||
小明开了个网上商店,卖风铃。共有 3个品牌:A,B,C 为了促销,每件商品都会返固定的积分。
|
||||
小明开业第一天收到了三笔订单:
|
||||
第一笔:3 个 A +7个B +1个C,共返积分:315。
|
||||
第二笔:4 个 A +10个B+1个 C,共返积分:420。
|
||||
第三笔:A + B + C,共返积分 ........
|
||||
你能算出第三笔订单需要返积分多少吗?*/
|
||||
public class 积分之谜 {
|
||||
public static void main(String[] args) {
|
||||
int a,b,c;//分别表示A B C三个品牌返回的固定积分
|
||||
for(a=1;a<420;a++) {
|
||||
for (b = 1; b<420; b++) {
|
||||
for (c = 1; c<420; c++) {
|
||||
if (3 * a + 7 * b + c == 315 && 4 * a + 10 * b + c == 420) {
|
||||
System.out.println(a+b+c);
|
||||
return ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 小蓝准备用256MB的内存空间开一个数组,数组的每个元
|
||||
素都是32位二进制整数,如果不考虑程序占用的空间和维护
|
||||
内存需要的辅助空间,请问256MB的空间可以存储多少个
|
||||
32位二进制整数?*/
|
||||
public class 空间 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
// TODO Auto-generated method stub
|
||||
System.out.println(256*1024*1024/4);
|
||||
System.out.println(Math.abs(256*1024*1024*8/32));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 题目描述
|
||||
数学老师给小明出了一道等差数列求和的题目。但
|
||||
是粗心的小明忘记了一部分的数列,只记得其中N个整数。现在给出这N个整数,小明想知道包含这N个整
|
||||
数的最短的等差数列有几项?
|
||||
输入描述
|
||||
输入的第一行包含一个整数N。第二行包含N个整数A1,A2,··,AN。(注意A1~AN并不一定是按等差数列中的顺序给出)
|
||||
其中,2≤N≤10^5,0≤A:≤10^9。
|
||||
输出描述
|
||||
输出一个整数表示答案。*/
|
||||
public class 等差数列 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
int n=sc.nextInt();
|
||||
int []a=new int [n];
|
||||
for(int i=0;i<n;i++) {
|
||||
a[i]=sc.nextInt();
|
||||
}
|
||||
Arrays.sort(a);
|
||||
//最小公差
|
||||
int d=a[1]-a[0];
|
||||
for(int i=1;i<n;i++) {
|
||||
d=gcd(d,a[i]-a[i-1]);
|
||||
}
|
||||
//判断公差为0的情况
|
||||
if(d==0)
|
||||
System.out.print(n);
|
||||
else
|
||||
//计算项数
|
||||
System.out.print((a[n-1]-a[0])/d+1);
|
||||
}
|
||||
//判断最大的公差
|
||||
static int gcd(int a, int b) {
|
||||
return b==0?a:gcd(b,a%b);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package LanQiaoOJ;
|
||||
/*约数
|
||||
* 题目描述
|
||||
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
|
||||
如果整数 a是整数 b的整数倍,则称 b是 a的约数。
|
||||
请问,有多少个正整数是 2020的约数。*/
|
||||
public class 约数 {
|
||||
public static void main(String[] args) {
|
||||
int count=0;//表示2020的约数的个数
|
||||
for(int a=1;a<=2020;a++) {
|
||||
if(2020%a==0) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
System.out.println(count);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 法二
|
||||
* int a=1;
|
||||
* while(a<=2020){
|
||||
if(2020%a==0)
|
||||
count++;
|
||||
a++;
|
||||
}
|
||||
*/
|
|
@ -0,0 +1,59 @@
|
|||
package LanQiaoOJ;
|
||||
import java.util.ArrayList;
|
||||
/*
|
||||
* 小蓝有一个超大的仓库,可以摆放很多货物。
|
||||
现在,小蓝有箱货物要摆放在仓库,每箱货物都是规则
|
||||
的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每
|
||||
箱货物的边都必须严格平行于长、宽、高。
|
||||
小蓝希望所有的货物最终摆成一个大的长方体。即在长、
|
||||
宽、高的方向上分别堆L、W、H的货物,满足n=L×WxH。
|
||||
给定,请问有多少种堆放货物的方案满足要求。
|
||||
例如,当=4时,有以下6种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。
|
||||
请问,当m=2021041820210418(注意有16位数字)时,总共有多少种方案?
|
||||
*/
|
||||
public class 货物摆放 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
int count=0;
|
||||
long num=2021041820210418l;
|
||||
//按此算法,时间复杂度非常大,短时间内无法出结果
|
||||
// long l,w,h;
|
||||
// for(l=0;l<=n;l++) {
|
||||
// for(w=0;w<=n;w++) {
|
||||
// for(h=0;h<=n;h++) {
|
||||
// if(n==l*h*w) {
|
||||
// count++;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// System.out.println(count);
|
||||
// }
|
||||
//声明一个ArrayList动态数组
|
||||
ArrayList<Long> arr=new ArrayList<>();
|
||||
//遍历求出num的因子,对num开平方根以减少运算量
|
||||
for(long i=1;i<Math.sqrt(num);i++) {
|
||||
if(num%i==0) {
|
||||
//将num的因子放入数组中
|
||||
arr.add(i);
|
||||
//在num能被i整除情况下,再求出num的另一个因子
|
||||
long n=num/i;
|
||||
//如果num = Math.sqrt(num)*Math.sqrt(num),那么由较小的因子求较大的因子时,会重复,要排除这种情况
|
||||
//当然,此时num,不会出现这种情况。如果num=4,就会出现这种情况
|
||||
if(n!=i)
|
||||
arr.add(n);
|
||||
}
|
||||
}
|
||||
|
||||
for(long l:arr) {
|
||||
for(long h:arr) {
|
||||
for(long w:arr) {
|
||||
if(num==l*h*w)
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(count);
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
/*
|
||||
* 问题描述
|
||||
给定正整数几,请问有多少个质数是几的约数。
|
||||
输入格式
|
||||
输入的第一行包含一个整数几。
|
||||
输出格式
|
||||
输出一个整数,表示的质数约数个数。*/
|
||||
public class 质因数个数 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
long n=sc.nextLong();
|
||||
int count=0;
|
||||
for(long i=2;i<n;i++) {
|
||||
if(n%i==0&&check(i)) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
System.out.print(count);
|
||||
}
|
||||
static Boolean check(long x) {
|
||||
for(long i=2;i<=x/i;i++) {
|
||||
if(x%i==0)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
import java.util.Scanner;
|
||||
//算术基本定理,又称为正整数的唯一分解定理,即:
|
||||
//每个大于1的自然数,若不是本身就是质数,就是可写为2个以上的质数的积
|
||||
public class 质因数个数2 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner sc=new Scanner(System.in);
|
||||
long n=sc.nextLong();
|
||||
int count=0;
|
||||
|
||||
//不需要遍历到n,任何一个数的质因数的质因子大于根号n的要么没有,要么只有1个
|
||||
for(long i=2;i<n/i;i++) {
|
||||
if(n%i==0) {
|
||||
count++;
|
||||
int ans=0;
|
||||
//用来求系数
|
||||
while(n%i==0) {
|
||||
ans++;
|
||||
n/=i;
|
||||
}
|
||||
System.out.println(i+" "+ans);
|
||||
}
|
||||
}
|
||||
if(n>1) {
|
||||
System.out.println(n+" "+1);
|
||||
count++;
|
||||
}
|
||||
System.out.println(count);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 小蓝每天都锻炼身体。
|
||||
正常情况下,小蓝每天跑1干米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2干米。如果同时是周一
|
||||
或月初,小蓝也是跑2干米。小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。
|
||||
请问这段时间小蓝总共跑步多少干米?*/
|
||||
public class 跑步锻炼 {
|
||||
//每月天数
|
||||
static int []w= {0,31,28,31,30,31,30,31,31,30,31,30,31};
|
||||
//定义年月日
|
||||
//t=1表示星期一,t=0表示星期天
|
||||
static int y=2000,m=1,d=1,t=6;
|
||||
static int count=0;
|
||||
public static void main(String[] args) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
while(y!=2020||m!=10||d!=1){
|
||||
if(y%400==0||y/400==0&&y/100!=0)
|
||||
w[2]=29;
|
||||
else
|
||||
w[2]=28;
|
||||
if(d==1||t==1) {
|
||||
count+=2;
|
||||
}
|
||||
else {
|
||||
count++;
|
||||
}
|
||||
d++;
|
||||
t++;
|
||||
t%=7;
|
||||
if(d>w[m]) {
|
||||
m++;
|
||||
d=1;
|
||||
}
|
||||
if(m>12) {
|
||||
y++;
|
||||
m=1;
|
||||
}
|
||||
if(y==2020&&m==10&&d==1) {
|
||||
count+=2;
|
||||
}
|
||||
}
|
||||
System.out.print(count);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package LanQiaoOJ;
|
||||
/*
|
||||
* 小蓝要为一条街的住户制作门牌号。
|
||||
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
|
||||
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,
|
||||
例如门牌 1017 需要依次粘贴字符1、0、1、7,即需要
|
||||
1 个字符 0,2 个字符 1,1 个字符 7
|
||||
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?*/
|
||||
public class 门牌制作 {
|
||||
public static void main(String[] args) {
|
||||
int count=0;
|
||||
for(int i=1;i<=2020;i++) {
|
||||
String numStr=Integer.toString(i);
|
||||
|
||||
for(int j=0;j<numStr.length();j++) {
|
||||
if(numStr.charAt(j)=='2')
|
||||
count++;
|
||||
}
|
||||
}
|
||||
System.out.print(count);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package LanQiaoOJ;
|
||||
|
||||
public class ÃÅÅÆÖÆ×÷2 {
|
||||
public static void main(String [] args) {
|
||||
int count=0;
|
||||
for(int i=1;i<=2020;i++) {
|
||||
int x=i;
|
||||
while(x>0) {
|
||||
if(x%10==2) {
|
||||
count++;
|
||||
}
|
||||
x/=10;
|
||||
}
|
||||
}
|
||||
System.out.print(count);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue