A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9),B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。
输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。
这题的核心就是实现不太进位的二进制加法
位运算或许可以 | 1|0 = 1
0|0 = 0
1|1 = 1
import java.util.*;
public class Main{
public static void main(String[]args){
Scanner san = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine();
int a = scan.nextInt();
int sum =a;
for(int i =1;i<n;i++){
int b =scan.nextInt();
a = a|b;
sum+=b;
}
System.out.println(sum=a);
}
}
如果无法满足A的要求,输出-1。
不一定是对的我不想花钱看答案
单词的平均重量
每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度Ni为该单词的重量,你需要做的就是给出整个句子的平均重量V。
样例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
Who Love Solo
输出
3.67
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String word = scan.nextLine();
Stirng words = word.split(" ");
int sum =0;
for(int i = 0;i<words.length;i++){
sum+= words[i].length;
}
System.out.println(sum/words.length);
}
}
不知道睁不正确呢? 因为没有 oj系统 不管了
路灯照明:
一条长为l的笔直街道上有n个街道,诺这条街道的起点为0
终点为l, 第i个路灯上坐标为ai,每盏灯可以覆盖的最远距离为d。
输入
7 15
imort java.util.*;
public class Main{
public static void main(String[]args){
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int [] arrs = new int[n];
scan.nextLine();
for(int i = 0;i<n;i++){
arrs[i] = scan.nextInt();
}
Arrays.sort(arrs);
int max = Integer.MIN_VALUE;
for(int i =0;i+1<arrs.length;i++){
max = Math.max(arrs[i+1] - arr[i],max);
}
System.out.println(max/2);
}
}
给定字符串 target和 source,判断 target是否为 source 的子序列。你可以认为target和 source 中仅包含英文小写字母。
字符串 source 可能会很长(长度~=500,000),而 target是个短字符串(长度<=100)。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。
(例如,”abc”是”aebycd”的一个子序列,而”ayb”不是)。
请找出最后一个子序列的起始位置。
输入描述:
第一行为target,短字符串(长度 <=100)
第二行为source,长字符串(长度 ~= 500,000)
输出描述:
最后一个子序列的起始位置,即最后一个子序列首字母的下标
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
abc
abcaybec
说明
这里有两个abc的子序列满足,取下标较大的,故返回3。
备注:
若在source中找不到target,则输出-1
感觉就是简单哈希一下,然后加上
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner scan = new Scanner(System.in);
String a = scan.nextLine();
String b = scan.nextLine();
int res = 0;
for(int i = 0;i<a.length();i++){
int start = b.indexOf(a.charAt(i));
if(start== -1){
System.out.println(-1);
}
b = b.substring(start+1);
res = start;
}
System.out.println(start);
}
}
事件推送
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 k = scan.nextInt();
scan.nextLine();
int [] a = new int[n];
int [] b = new int[n];
for(int i = 0;i<n;i++){
a[i] = scan.nextInt();
}
scan.nextLine();
for(int i = 0;i<m;i++){
b[i] = scan.nextInt();
}
int i =0;
int j = 0;
//双指针
while(i<n&&j<m){
if(a[i]>b[j]){
j++;
}
int dis = b[j] - a[i];
if(dis<=k){
System.out.println(a[i],b[j]);
i++;
j++;
}else{
i++;
}
}
}
}
}
}
不知道丢不对啊
因为网络问题,有些地方 题目信息 没能copy过来
我都是看手机上的题, 网站也不提供答题的,要我注册vip
我注册不了
学习就就是经受火烤