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]);
}
}
}