A 一个简单的问题

题目描述

  A
 ABA
ABCBA

这是一个三层的字母塔。

如何输出一个任意层数的字母塔呢?

输入描述

一个数字n(1<=n<=26),表示字母塔的层数

注意 此题多组输入

输出描述

n层的字母塔

样例输入

3
4

样例输出

  A
 ABA
ABCBA
   A
  ABA
 ABCBA
ABCDCBA

java代码

import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
        Scanner scanner =new Scanner(System.in);
        while(scanner.hasNext()) {
            int n=scanner.nextInt();
            for(int i=1;i<=n;i++) {
                int A='A';
                for(int k=n-i;k>0;k--) {
                    System.out.print(" ");
                }
                for(int j=0;j<i;j++) {
                    char ac=(char) ('A'+j);
                    System.out.print(ac);
                }
                for(int j=i-1;j>0;j--) {
                    char ac=(char) ('A'+j-1);
                    System.out.print(ac);
                }
                System.out.println();
            }
            
            
        }
        
    }
}

E icebound的账单

题目描述

icebound从小就有记账的习惯。又到了月末icebound统计资金状况的时候。icebound每个月除了不停的挥霍以外,有时他会良心发现,勤工俭学,因此会有一些微薄的收入。然而icebound数学不好,需要你来帮助他统计他本月的资金状况。

你将会得到一份icebound的账单,一共有 n 行整数,其中正数表示icebound打工挣来的收入,负数表示icebound消费的支出。数据保证不会出现 0 。

如果icebound本月总收入大于总支出,请你输出“icebound is happy.”;如果本月总收入等于总支出,请你输出“icebound is ok.";如果总收入小于总支出,请你输出"icebound is sad."。

输入描述

第一行,有一个正整数n,代表账单有n行。

接下来有n行,每行一个整数,第i+1行整数a_i

输出描述

输出一行。如果icebound本月总收入大于总支出,请你输出“icebound is happy.”;如果本月总收入等于总支出,请你输出“icebound is ok.";如果总收入小于总支出,请你输出"icebound is sad."。

样例输入

2
100
-100

样例输出

icebound is ok.

java代码

import java.util.Scanner;

public class Main{

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n=scanner.nextInt();
        int sum1=0;
        int sum2=0;
        for (int i = 0; i < n; i++) {
            int m=scanner.nextInt();
            if (m>0) {
                sum1+=m;
            }else {
                sum2+=m;
            }
        }
        if (sum1==(-sum2)) {
            System.out.println("icebound is ok.");
        }
        else if(sum1>(-sum2)) {
            System.out.println("icebound is happy.");
        }
        else {
            System.out.println("icebound is sad.");
        }
        
    }
}

F 520

题目描述

“又到了五月了呢”,icebound望着五月的天空,眼角流出了泪痕。那一年,icebound还是一个懵懂的少年。那一年,她还是一个青涩纯真的少女。在那一次偶然的相遇之中,他们之间擦出了爱情的火花。他们欢笑着,奔跑着,他们展望着美好的未来,向往着幸福的明天。她像 icebound 心海中的灯塔,像icebound 头顶上的星辰,即使在海里浮沉,即使在夜里摸爬,心中也不会感到迷茫,感到阴寒。他们努力,奋进,向着六月的那一站前行。可是,美好总是短暂的。那海上的灯塔不再发出温情的光亮,那天空中的星辰不再绽放出温柔的色彩。那一站,到达了,icebound 得到了终点,但icebound 永远失去了她,也失去了他的心。

”侯门一入深似海,从此萧郎是路人“

今天是2018年5月20日,又是一年的520。这一天,icebound不小心读到上面的诗,icebound沉思着,回想起与她曾经的快乐时光,icebound留下了n滴眼泪。icebound的每滴眼泪都带有太多的伤感之情了,以至于每滴眼泪都会感染到其他的生物,使得许多生物都一起掉下了眼泪。k通过观察得知,当icebound流出n滴眼泪时,所有生物产生的眼泪总数为2^n。现在,k需要你帮助他写一个程序,计算当icebound流出n滴眼泪时,所有生物产生的眼泪总数PP,对 20180520 取模。

输入描述

一个正整数n,代表icebound留下眼泪的个数。1≤n≤2x10^9

输出描述

一个正整数P,代表所有生物产生的眼泪总数,对 20180520 取模。

样例输入

1

样例输出

2

java代码

import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
         Scanner scanner = new Scanner(System.in);
         int n=scanner.nextInt();
         long res=1;
         long a=2;
         while(n!=0) {
             if ((n&1)==1) {
                res = res *a % 20180520;
                a=2;
            }
             else {
                 a=a*a%20180520;
                
             }
            
             n--;
         }
         System.out.println(res);
        
        
    }
}

G 神殿

题目描述

icebound通过勤工俭学,攒了一小笔钱,于是他决定出国旅游。这天,icebound走进了一个神秘的神殿。神殿由八位守护者守卫,总共由6464个门组成,每一道门后都有一个迷宫,迷宫的大小均为100 \times 100100×100。icebound在迷宫中总共耗时T小时,消耗食物K公斤。历经千辛万苦之后,icebound终于穿越了迷宫,到达了神殿的中心。神殿的中心有一个宝箱。宝箱上显示有两个正整数l和r。icebound苦思冥想,终于发现一些打开宝箱的线索。你需要找到一个数PP,它具有一个美妙的性质:它是l,r中所有数的二进制表示里,11的个数最多的一个数。如果你发现了这个美妙的数字,你就可以打开宝箱,获得巨额财富。

比如4,8中:

4: 0100
5: 0101
6: 0110
7: 0111
8: 1000

二进制表示中1的个数最多的数是7,它含有3个1。

输入描述

输入一行,两个正整数:l和r,用空格隔开,代表神殿中宝箱上显示的数。

输出描述

一个十进制数P,代表满足条件的解。如果有多个P满足条件,输出最小的P。

样例输入

4 8

样例输出

7

java代码

import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
         Scanner s = new Scanner(System.in);
         long l=s.nextLong();
         long r=s.nextLong();
         while((l|(l+1)) <=r) {
             l |= (l+1);
         }
         System.out.println(l);
            
        
    }
}

I icebound的商店

题目描述

icebound在得到神殿的宝藏之后,开了一家神秘的商店。你来到了商店,发现慷慨的icebound搞了T次促销活动。在每次促销活动中,icebound都会想出一个他喜欢的数字,如果你买的商品的总价刚好等于icebound喜欢的数字,那么你就可以免费得到这些商品。

icebound的商店里一共有 15 件商品,商品的价格和这家商店一样神秘,第一件商品的价格是 1 元,第二件商品的价格是 2 元,设第n件商品的价格为w_n元,则:w_n = w_{n-1} + w_{n-2}

如果在某次活动中icebound喜欢的数字是 4,那么共有 4 种购买方案:

1. 买 4个 第一种商品
2. 买 2个 第一种商品 和 1个 第二种商品
3. 买 2个 第二种商品
4. 买 1个 第一种商品 和 1个 第三种商品

请你算出共有多少种方案可以免费购物,方案数对1000000009(=10^9+9=109+9)取模。

输入描述

第一行给出一个整数T,表示icebound搞了T次活动。

接下来的T行每行给出一个正整数X,表示在这次活动中icebound喜欢的数字。

输出描述

输出T行,每行输出一个正整数。

第i行的正整数表示在第i次活动中免费购物的方案数,方案数对1000000009取模。

样例输入

3
5
20
30

样例输出

6
134
509

java代码

import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
        //动态规划
        Scanner scanner = new Scanner(System.in);
        int T = scanner.nextInt();//输入T
        
        int w[] = new int[16];
        w[1] = 1;
        w[2] = 2;
        //输入商品价格
        for (int i = 3; i < 16; i++) {
            w[i] = w[i-1] + w[i-2];
        }
        int []res=new int[T];
        int q=0;
        while (T>0) {
            int n =scanner.nextInt();
            int dp[] = new int[n+1];
            dp[0] = 1;
            for (int i = 1; i < 16; i++) {
                for (int j = w[i]; j <= n; j++) {
                    dp[j] =dp[j]+dp[j-w[i]];
                    dp[j] %= 1000000009;
                }
            }
            res[q]=dp[n];
            q++;
            T--;
        }
        for(int i=0;i<res.length;i++) {
            System.out.println(res[i]);
        }
    }
}
最后修改:2022 年 09 月 25 日
如果觉得我的文章对你有用,请随意赞赏