题目一 合并检测
该题代码的版权声明
版权声明:本文为CSDN博主「罡罡同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46625346/article/details/112771529
package pk1;
public class hebingjiance {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
//假设A国有100个人,则有一个感染者
int min =100; //最多需要100盒试剂
int ans=0;
for(int k=1;k<=100;k++){
int temp;
if(100%k!=0){temp=100/k+k+1; }
else{temp=100/k+k;}
if(min>temp){
min=temp;
ans=k;
}
}
System.out.println(ans);
}
}
结果
10
题目二 分配口罩
该题代码的版权声明
版权声明:本文为CSDN博主「这!就是阿光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_47256162/article/details/110479953
package pk1;
public class fenpeikouzhao {
public static long res=Long.MAX_VALUE;
public static long num[]={9090400, 8499400, 5926800, 8547000, 4958200,
4422600, 5751200, 4175600, 6309600, 5865200,
6604400, 4635000, 10663400, 8087200, 4554000
};
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
dfs(0, 0, 0);
System.out.println(res);
}
public static void dfs(int k,long sum1,long sum2 ) {
if(k==15) {
res=res<Math.abs(sum1-sum2)?res:Math.abs(sum1-sum2);
return;
}
dfs(k+1, sum1+num[k], sum2);
dfs(k+1, sum1, sum2+num[k]);
}
}
结果
2400
题目三
package pk1;
import java.math.BigInteger;
public class zuidagongyueshu {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
//因为数太大必须用BigInteger定义变量
BigInteger a=new BigInteger("1");
BigInteger b=new BigInteger("1");
BigInteger c=new BigInteger("1");
BigInteger d=new BigInteger("1");
BigInteger sum1=new BigInteger("0");
BigInteger sum2=new BigInteger("0");
//用两个for循环分别求出F520和F2020
for(int x=3;x<=520;x++)
{
sum1=a.add(b);
a=b;
b=sum1;
}
for(int y=3;y<=2020;y++)
{
sum2=c.add(d);
c=d;
d=sum2;
}
//用辗转相除法求最大公约数
BigInteger temp;
while(sum1!=BigInteger.ZERO)
{
temp=sum2.mod(sum1);
sum2=sum1;
sum1=temp;
}
System.out.println(sum2);
}
}
结果
6765
题目四
package pk1;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
//输入字符串
@SuppressWarnings("resource")
Scanner input=new Scanner(System.in);
String str=input.next();
//数组遍历方法,a求大写字母个数,b求小写字母个数,c求数字个数
int a=0,b=0,c=0;
for (int i=0;i<str.length();i++){
if((int) str.charAt(i)>=(int)'A'&&(int) str.charAt(i)<=(int)'Z')
{a++;}
if((int) str.charAt(i)>=(int)'a'&&(int) str.charAt(i)<=(int)'z')
{b++;}
if((int) str.charAt(i)>=(int)'0'&&(int) str.charAt(i)<=(int)'9')
{c++;}
}
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
结果
AS146zsd
2
3
3
题目五
package pk1;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
//输入正整数n
@SuppressWarnings("resource")
Scanner input=new Scanner(System.in);
int n=input.nextInt();
//利用for循环先求和再取余
int sum=0;
int anser=0;
for(int i=0;i<n+1;i++){
sum+=Math.pow(i,8);
}
anser=sum%123456789;
System.out.println(anser);
}
}
测试
5
462979
题目六 字符串编码
该题代码的版权声明
版权声明:本文为CSDN博主「毛毛虫不想努力了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44864169/article/details/115500437
package pk1;
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
char[] chars = new char[27];//下标对应字母的数组
for(int i = 1;i<=26;i++){
chars[i]= (char) ('A'+i-1);
}
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String s = sc.next();
int [] nums =new int[20000];//
//遍历字符串判断其中是否有"0"并将其存储到对应下标的nums数组中
for (int i=0;i<s.length();i++){
if (s.charAt(i)=='0'){
nums[i]=i;
}
}
int te =0;//记录当前0的位置
//这两个for循环可处理完数字序列中的多个0,但如果最后一个0后面还有数字序列,则无法处理,留给下面的循环处理
for (int i = 0;i<s.length();i++){//外层循环遍历的是nums数组,找到"0"出现的下标
if (nums[i]!=0){
for (int j = te;j<i-1;j++){//内层循环遍历的是字符串,通过外层遍历得到的"0"下标,在循环到该下标前一个时,就停下,在内循环外特殊处理"0"
if (j+1<i-1){
StringBuilder t = new StringBuilder("" + s.charAt(j));
t.append(s.charAt(j+1));
int temp =Integer.parseInt(String.valueOf(t));
if (temp>26){
System.out.println(chars[Integer.parseInt(""+s.charAt(j))]);
}else{
System.out.println(chars[temp]);
j++;
}
}else{
System.out.print(chars[Integer.parseInt(""+s.charAt(j))]);
}
}
System.out.print(chars[Integer.parseInt(String.valueOf(new StringBuilder("" + s.charAt(i - 1) + s.charAt(i))))]);
te=i+1;
}
}
//如果最后一个0后还有数字序列,或者数字序列中一个0也没有,将在这个循环中处理
for (int j = te;j<s.length();j++){
if (j+1<s.length()){
StringBuilder t = new StringBuilder("" + s.charAt(j));
t.append(s.charAt(j+1));
int temp =Integer.parseInt(String.valueOf(t));
if (temp>26){
System.out.print(chars[Integer.parseInt(""+s.charAt(j))]);
}else{
System.out.print(chars[temp]);
j++;
}
}else{
System.out.print(chars[Integer.parseInt(""+s.charAt(j))]);
}
}
}
}
测试
120769
ATGFI
再次声明,有三题转载已申明版权,其他三题原创。