求和(JAVA)
题目:给定 n 个整数 a1,a2,⋅⋅⋅,an ,求它们两两相乘再相加的和,即:
S=a1⋅a2+a1⋅a3+⋯+a1⋅an+a2⋅a3+⋯+an−2⋅an−1+an−2⋅an+an−1⋅an
输入格式输入的第一行包含一个整数 n。
第二行包含 n 个整数a1,a2,⋯,an。
输出格式输出一个整数 S,表示所求的和。请使用合适的数据类型进行运算。
样例输入
41 3 6 9
样例输出
117
评测用例规模与约定对于 30 %30% 的数据,1≤n≤1000,1≤ai≤100 。
对于所有评测用例, 1≤n≤200000,1≤ai≤1000 。
运行限制最大运行时间:1s最大运行内存: 512M
代码:import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int N; long sum=0,S=0; ...
猜字母(JAVA)
题目:本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 abcd…s 共19个字母组成的序列重复拼接 106 次,得到长度为 2014 的串。
接下来删除第 1 个字母(即开头的字母 a),以及第 3 个,第 5 个等所有奇数位置的字母。
得到的新字符串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请输出该字母。
运行限制最大运行时间:1s最大运行内存: 128M
代码:public class Main { public static void main(String[] args) { int x=0; char[] arr=new char[2014]; for (int i=0;i<106;i++){ for (int j=0;j<19;j++){ arr[x++]=(char)('a'+j); } } ...
四平方和(JAVA)
题目:四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多 4 个正整数的平方和。
如果把 0 包括进去,就正好可以表示为 4 个数的平方和。
比如:
5 = 0^2 + 0^2 + 1^2 + 2^25;
7 = 1^2 + 1^2 + 1^2 + 2^27;
对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对 4 个数排序:
0≤a≤b≤c≤d
并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法。
输入描述程序输入为一个正整数 N(N<5×10^6)。
输出描述要求输出 4 个非负整数,按从小到大排序,中间用空格分开
输入输出样例示例
输入
12
输出
0 2 2 2
运行限制最大运行时间:3s最大运行内存: 256M
代码: import java.util.HashMap;import java.util.Map;import java.util.Scanner; public class Main { public static void main(String[] args) { ...
猜生日(python)
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
今年的植树节(2012 年 3 月 12 日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”
“把我出生的年月日连起来拼成一个 8 位数(月、日不足两位前补 0)正好可以被今天的年、月、日整除!”
他想了想,又补充到:“再给个提示,我是 6 月出生的。”
根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
格式是年月日连成的 8 位数。例如,如果是 1948年 6 月 12 日,就写:19480612。
参考代码:
num = y = m = d = 0for y in range(1900, 2012): # 叔叔出生的年份至少要在1900年以后吧,要不就太大了 for d in range(1, 31): # 六月是30天 num = y * 10000 + 6 * 100 + d # 要将其变为八位数 if num % 2012 == 0 and num % 3 == 0 an ...
取球博弈(JAVA)
题目:两个人玩取球的游戏。
一共有 N 个球,每人轮流取球,每次可取集合 n1,n2,n3中的任何一个数目。
如果无法继续取球,则游戏结束。
此时,持有奇数个球的一方获胜。
如果两人都是奇数,则为平局。
假设双方都采用最聪明的取法,
第一个取球的人一定能赢吗?
试编程解决这个问题。
输入描述输入格式:
第一行 3 个正整数n1,n2,n3 (0<n1,n2,n3<100),空格分开,表示每次可取的数目。
第二行 5 个正整数 x1,x2,⋯,x5 (0<xi<1000),空格分开,表示 5 局的初始球数。
输出描述输出一行 5 个字符,空格分开。分别表示每局先取球的人能否获胜。
能获胜则输出 +,次之,如有办法逼平对手,输出 0,无论如何都会输,则输出 -。
输入输出样例示例
输入
1 2 31 2 3 4 5
输出
+0 + 0 -
运行限制最大运行时间:3s最大运行内存: 256M
初始代码(会超时):import java.util.Arrays;import java.util.Scanner; public class qu_qiu_bo_yi ...
包子凑数(JAVA)
题目:小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 N 种蒸笼,其中第 i 种蒸笼恰好能放Ai 个包子。每种蒸笼都有非常多笼,可以认为是无限笼。
每当有顾客想买 X 个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有 X 个包子。比如一共有 3 种蒸笼,分别能放 3、4 和 5 个包子。当顾客想买 11 个包子时,大叔就会选 2 笼 3 个的再加 1 笼 5 个的(也可能选出 1 笼 3 个的再加 2 笼 4 个的)。
当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有 3 种蒸笼,分别能放 4、5 和 6 个包子。而顾客想买 7 个包子时,大叔就凑不出来了。
小明想知道一共有多少种数目是包子大叔凑不出来的。
输入描述第一行包含一个整数 N (1≤N≤100)。
以下 N 行每行包含一个整数 Ai (1≤Ai≤100)。
输出描述一个整数代表答案。如果凑不出的数目有无限多个,输出 INF。
输入输出样例示例 1
输入
245
输出
6
样例说明
凑不出的数目包括:1, 2, 3, 6, 7, 11。
示例 2
输入
246
输出
...
等差数列(JAVA)
题目:数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。
现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?
输入描述输入的第一行包含一个整数 N。
第二行包含 N 个整数A1,A2,⋅⋅⋅,AN。(注意A1 ∼ AN 并不一定是按等差数列中的顺序给出)
其中,2≤N≤10^5,0≤Ai≤10^9。
输出描述输出一个整数表示答案。
输入输出样例示例
输入
52 6 4 10 20
输出
10
样例说明: 包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。
运行限制最大运行时间:1s最大运行内存: 256M
代码:import java.util.Arrays;import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); ...
质数拆分(JAVA)
题目:本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
将 2019 拆分为若干个两两不同的质数之和,一共有多少种不同的方法?
注意交换顺序视为同一种方法,例如 2+2017=2019 与2017+2=2019 视为同一种方法。
运行限制最大运行时间:1s最大运行内存: 128M
代码:import java.util.Scanner;// 1:无需package// 2: 类名必须Main, 不可修改 public class Main { static int n=2500; static int[]arr=new int[n]; //存放质数 static long dp[][]=new long[n][n]; //记录方案数 public static void main(String[] args) { int cur=1; for(int i=2;i<20 ...
k倍区间(JAVA)
题目:给定一个长度为 N 的数列,A1,A2,⋯AN,如果其中一段连续的子序列Ai,Ai+1,⋯Aj ( i≤j ) 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。
你能求出数列中总共有多少个 K 倍区间吗?
输入描述第一行包含两个整数 N 和 K( 1≤N,K≤100000)。
以下 N 行每行包含一个整数Ai ( 1≤Ai≤100000)
输出描述输出一个整数,代表 K 倍区间的数目。
输入输出样例示例
输入
5 212345
输出
6
运行限制最大运行时间:2s最大运行内存: 256M
代码:import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int K = sc.nextInt(); int[] A = new int[N]; ...
回文日期(JAVA)
在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。
牛牛认为,一个日期是回文的,当且仅当表示这个日期的 8 位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身),有多少个真实存在的日期是回文的。
提示:
一个 8 位数字是回文的,当且仅当对于所有的i (1≤i≤8) 从左向右数的第 i 个数字和第 9 - i个数字(即从右向左数的第 i 个数字)是相同的。
例如:
对于 2016 年 11 月 19 日,用 8 位数字 20161119 表示,它不是回文的。
对于 2010 年 1 月 2 日,用 8 位数字 20100102 表示,它是回文的。
对于 2010 年 10 月 2 日,用 8 位数字 20101002 表示,它不是回文的。
每一年中都有 12 个月份:
其中,1,3,5,7,8,10,12 月每个月有 31 天;4,6,9,11 月每个月有 30 天;而 ...