A 钱钱计数

题目描述

五营的营长们最近大捞了一笔,现在他们要清点钱的数量在下个星期四去KFC疯狂消费,但是由于钱的数量太多,营长们决定把这个任务放到可爱的营员头上。营长们每次从钱包里随机抽出一张纸币,直到抽完为止,最终得到一个整数构成的序列,表示钱包里的所有纸币,试计算营长们一共有多少钱,并清点出每种面额的纸币有多少张。例如,最终得到的整数序列为20 5 1 10 50 100,则总钱数为186元,一元面额的纸币有11张。

输入描述

第一行给出一个整数n (0 < n <= 1000)n(0<n<=1000),表示清点出的纸币的张数,第二行有nn 个整数,每个整数(1、5、10、20、50、100中的某一个)之间用一个空格隔开,表示每次抽出纸币的面额。

输出描述

第一行输出11个整数,表示五营营长们的总钱数,接下来有六行,每行输出指定纸币的面额和该面额纸币的张数,中间用一个空格隔开。

样例输入

3 

1 10 5

样例输出

16

1 1 

5 1 

10 1 

20 0 

50 0 

100 0

代码

import java.util.Scanner;
public class Main{
public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         int n = scanner.nextInt();//纸币的张数
         int []a=new int [n];
         int sum=0;
         for(int i=0;i<n;i++) {//输入面值
             a[i]=scanner.nextInt();
             sum +=a[i];
         } 
         int num1=0;//一元
         int num2=0;//五元
         int num3=0;//十元
         int num4=0;//二十
         int num5=0;//五十
         int num6=0;//一百
         for(int i=0;i<n;i++) {
             if (a[i]==1) {
                num1++;
            }
             if (a[i]==5) {
                num2++;
            }
             if (a[i]==10) {
                num3++;
            }
             if (a[i]==20) {
                    num4++;
                }
             if (a[i]==50) {
                    num5++;
                }
             if (a[i]==100) {
                    num6++;
                }
         }
         System.out.println(sum);
         System.out.println("1 "+num1);
         System.out.println("5 "+num2);
         System.out.println("10 "+num3);
         System.out.println("20 "+num4);
         System.out.println("50 "+num5);
         System.out.println("100 "+num6);  
    }
}

B 难题

题目描述

其实生活中有很多的问题,它们表面看起来很难,但其实很简单。

比如下面这个问题:

一个正方形可以被分割成n个小正方形,求n的取值范围。

现在给你一个数n,请你判断这个正方形能否被分割成n个小正方形。

(对小正方形的大小没有要求,即只要是正方形即可)

输入描述

一个正整数n(2<=n<=1e10)

输出描述

如果可以输出“YES” 否则输出“NO”

样例输入

5

样例输出

NO

提示

对于任意大小的一个正方形,沿着其水平和竖直方向上的轴线切开,可以将总正方形数加三。 新增样例 样例输入:6 样例输出:YES

代码

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         int n =scanner.nextInt();
         String result=null;
         if (n!=2&&n!=3&&n!=5) {
            result="YES";
        }else {
            result="NO";
        }
         System.out.println(result);
    }
}

C 地震

题目描述

“地震的震级是地震大小的度量,是地震释放能量级别的对数表示”

众所周知,地震的震级每增加一级,其释放的能量强度就增大约32倍。

给定两个震级A,B,请输出A级地震的能量强度是B*级地震的多少倍。

输入描述

一行两个整数A,B(3≤BA*≤9)。

输出描述

输出一行一个整数,代表答案。

样例输入

6 4

样例输出

1024

提示

样例解释:

66级地震是5级地震的32倍,55级地震是44级地震的32倍,故66级地震是44级地震的32 \times 32 = 102432×32=1024倍。

代码

 import java.util.Scanner;

      public class Main{
    public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         int A =scanner.nextInt();
         int B =scanner.nextInt();
         if (A<=9) {
            
        }
         int sum=A-B;
         int result=1;
         for(int i=0;i<sum;i++) {
             result=result*32;
         }
         System.out.println(result);
    }
}

E Crazy Thursday V Me 50 Again

题目描述

上一次会长请章章吃过KFC之后,会长表示不服气,他决定再给章章发一封邮件,并且承诺如果章章能够做出来这次的题目就给他买一整个学期的疯狂星期四。

章章打开邮件后只发现了一串公式

A1=0

A2=1

A3=1

A4=A1+2∗A2+A3

A5=A2+2∗A3+A4

请求出An

输入描述

输入一个整数n (1<=n<=50)

输出描述

输出一个整数

样例输入

4

样例输出

3

提示

如果你无法通过预期的题目,请注意你使用的数据类型的范围是否足够大

代码

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         int n =scanner.nextInt();
         if (n==1) {
            System.out.println(0);
        }
         if (n==2) {
                System.out.println(1);
            }
         if (n==3) {
                System.out.println(1);
            }
         if (n>3) {
             long []a = new long[n];
             a[0]=0;
             a[1]=1;
             a[2]=1;
             for(int i=4;i<n+1;i++) {
                 a[i-1]=a[i-2]+2*a[i-3]+a[i-4]; 
                }
             System.out.println(a[n-1]);
        }    
    }
}

F 田鼠 pk 船长

题目描述

船长和田鼠最近在玩一个取石子的游戏,石子共有 n 堆,每堆石子数不超过10^9,两人轮流取石子,每次船长先取,取得石子数只能是质数或一,而且只能取完一堆后才能取下一堆,下一次取得堆编号必须比上一个小,无法再取的人将会输掉比赛。假如两人都是用最优策略,请问谁会赢得比赛呢?

输入描述

第一行一个整数 T ,代表一共有 T 组测试数据,接下来一行输入n,n < 2^16 ,下一行是 n 个整数代表每一堆的石子数。

输出描述

如果船长胜利输出"yes",田鼠胜利输出"no",均不带引号。

样例输入

2
2
2016 100
3
4 7 10

样例输出

no
yes

代码

import java.util.Scanner;

public class Main {
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);//输入语句
  int t = scanner.nextInt();
  
  String str="";
  while(t--!=0) {
      int n=scanner.nextInt();
      int w=0;
      for(int i=0;i<n;i++) {
          int x=scanner.nextInt();
          if (x%4!=0) {
            w=1;
        }
          
      }
      if (w==1) {
             str = str+"yes\n";
        }
          else {
             str = str+"no\n";
          }
  }
  System.out.println(str);
  
 }
}
最后修改:2022 年 09 月 04 日
如果觉得我的文章对你有用,请随意赞赏