蓝桥杯算法vip训练习题与答案带测试数据1
蓝桥杯试题标准答案(练习)

1、亲密数:假设有a、b两个数,若 a 的所有因子之和等于b,b 的所有因子之和等于a ,并且 a 不等于b ,则称 a 和 b 是一对亲密数。
如284 和 220 就是一对亲密数。
#include<stdio.h>int main(){int a,b,i,n;for(a=1;a<=10000;a++){for(b=0,i=1;i<=a/2;i++)if(a%i==0)1b+=i;for(n=0,i=1;i<=b/2;i++)if(b%i==0)n+=i;1if(n==a&&a!=b&&a<b)printf("%d-%d\n",a,b);}return 0;}2、世纪末的星期:曾有邪教称 1999 年 12 月 31 日是世界末日。
当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12 月 31 日如果是星期一则会....有趣的是任何一个世纪末的年份的12 月 31 日都不可能是星期一!!于是“谣言制造商”又修改为星期日 ......1999 年的 12 月 31 日是星期五,请问,未来哪一个离我们最近的一个世纪末年即xx99 年的12 月 31 日正好是星期天,即星期日请回答该年份,只写这个4 位整数,不要写 12 月 31 等多余信息#include<stdio.h>2int main(){long days = 5; /*1999 年的最后一天为周5,把下一年加上 5天对 7 取余为 0 的,则是周日*/int i = 2000;for(;;) /*无循环终止条件,可以利用break 语句终止循环*/{if(i%4==0&&i%100!=0||i%400==0){days = days%7+366;else{days = days%7+365;3}if(days%7==0&&i%100==99) {printf("%d",i);break;}i++;}return 0;}3、马虎的算式:小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
“蓝桥杯”练习系统练习题答案(自己做的)

“蓝桥杯”练习系统练习题答案(⾃⼰做的)题⽬来源:蓝桥杯练习系统(写博客⽇期为2019.3.23,所以可能读者看到的时候,更新了新的题)这⾥只提供每道题的我的解题代码,仅供参考。
这⾥不会写解题思路和详解,如果有需要的话,请留⾔给我,我会在留⾔区回复。
vip题⽬来源dotcpp(顺序跟练习系统⼀样,只不过我没有vip,所以在dotcpp⽹站中看题并解题)。
试题集截图:⼊门训练:1-1 BEGIN-1import java.util.*;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int a = in.nextInt();int b = in.nextInt();System.out.println(a+b);}}1-2 BEGIN-2import java.util.*;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);double n = in.nextInt();double s = (1 + n) / 2;double t = s * n;System.out.println((long)t);}}1-3 BEGIN-3import java.util.*;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);final double PI = 3.14159265358979323;double a = in.nextInt();double c = a*a*PI;System.out.printf("%.7f", c);}}1-4 BEGIN-4public class Main {public static void main(String[] ars){Scanner in = new Scanner(System.in);int n = in.nextInt();if(n < 3){System.out.println(1);}else {int[] a = new int[n + 1];a[1] = 1 % 10007;a[2] = 1 % 10007;for (int i = 3; i <= n; i++) {a[i] = (a[i - 1] + a[i - 2]) % 10007;}System.out.println(a[n]);}}}基础练习:2-1 BASIC-1import java.util.Scanner;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int y = in.nextInt();if((y%4 == 0 && y%100 != 0) || (y%400 == 0)){System.out.println("yes");}else {System.out.println("no");}}}2-2 BASIC-2public class Main {public static void main(String[] args){for(int i=0; i<32; i++) {String str = Integer.toBinaryString(i);System.out.printf("%05d", Integer.valueOf(str)); System.out.println();}}}2-3 BASIC-3import java.util.Scanner;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();String s = "BCDEFGHIJKLMNOPQRSTUVWXYZ"; StringBuilder str = new StringBuilder(s);str = str.reverse();str.append("A");str.append(s);int a = str.indexOf("A");int b = a+m;for(int i=0; i<n; i++){System.out.println(str.substring(a, b));a--;b--;}}}2-4 BASIC-4import java.util.Scanner;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();int[] s = new int[n];for(int i=0; i<n; i++){s[i] = in.nextInt();}int max = s[0];int min = s[0];int sum = 0;for(int j=0; j<s.length; j++){if(s[j] > max){max = s[j];}if(s[j] < min){min = s[j];}sum = sum + s[j];}System.out.println(max);System.out.println(min);System.out.println(sum);}}2-5 BASIC-5import java.util.Scanner;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in); int n = in.nextInt();int[] s = new int[n];for(int i=0; i<n; i++){s[i] = in.nextInt();}int a = in.nextInt();in.close();int count = 0;for(int j=0; j<s.length; j++){if(s[j] == a){count = j+1;break;}}if(count == 0){System.out.println(-1);}else {System.out.println(count);}}}2-6 BASIC-6import java.util.Scanner;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in); int n = in.nextInt();int[][] a = new int[n][n];if(n == 1){System.out.println(1);}else{a[0][0] = 1;for(int i=1; i<n; i++){a[i][0] = 1;a[i][i] = 1;if(n != 2){for(int j=1; j<=i-1; j++){a[i][j] = a[i-1][j-1] + a[i-1][j]; }}}}// 显⽰for(int i=0; i<n; i++){for(int j=0; j<=i; j++){System.out.print(a[i][j]);if(i!=j){System.out.print(' ');}}System.out.println();}}}2-7 BASIC-7public class Main {public static void main(String[] args){for(int dd=100; dd<=999; dd++){String data = dd + "";char d0 = data.charAt(0);char d1 = data.charAt(1);char d2 = data.charAt(2);double sum1 = Math.pow((d0-'0'), 3) + Math.pow((d1-'0'), 3) + Math.pow((d2-'0'), 3); if((int)sum1 == dd){System.out.println(dd);}}}}2-8 BASIC-8public class Main {public static void main(String[] args){StringBuilder a = new StringBuilder();for(int i=1; i<=9; i++){for(int j=0; j<=9; j++){a.append(i);a.append(j);a.append(j);a.append(i);System.out.println(a.toString());a.delete(0, a.length());}}}}2-9 BASIC-92-9-1 解法⼀import java.util.Scanner;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();for(int i=10000; i<=999999; i++){String data = "" + i;int sum = 0;for(int k=0; k<data.length(); k++){sum = sum + (data.charAt(k)-'0');}int len = data.length();int count = len/2;// 计算相等的个数,如果是2,3则满⾜StringBuilder flag = new StringBuilder();for(int j=0; j<count; j++){if(data.charAt(j) == data.charAt(len-j-1)){flag.append(1);}else{flag.append(0);}}if((flag.toString().equals("111") || flag.toString().equals("11")) && (n == sum)){System.out.println(i);}else{continue;}}}}2-9-2 解法⼆import java.util.Scanner;public class Main {public static void f5(int n){/* 五位数处理代码 */StringBuilder anser1 = new StringBuilder();// 测试第1位的值for(int i=1; i<=9; i++){// 测试第2位的值for(int j=0; j<=9; j++){// 计算第3位的值int third_number = n - 2*i - 2*j;if(third_number>=0 && third_number<=9){ anser1.append(i);anser1.append(j);anser1.append(third_number);anser1.append(j);anser1.append(i);System.out.println(anser1);anser1.delete(0, anser1.length());}else{continue;}}}}public static void f6(int n){/* 六位数处理代码 */StringBuilder anser2 = new StringBuilder();// temp: 前三位相加的值int temp = n/2;// 测试第1位的值for(int i=1; i<=9; i++){// 测试第2位的值for(int j=0; j<=9; j++){// 计算第3位的值int third_number2 = temp-i-j;if(third_number2>=0 && third_number2<=9){ anser2.append(i);anser2.append(j);anser2.append(third_number2);anser2.append(third_number2);anser2.append(j);anser2.append(i);System.out.println(anser2);anser2.delete(0, anser2.length());}else{continue;}}}}public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();f5(n);// 偶数才可能是6位if(n%2==0){f6(n);}}}2-10 BASIC-10import java.util.Scanner;public class Main {public static char f(long a){char temp = ' ';if(a<=9){temp = (char)(a+48);}else {switch ((int) a) {case 10:temp = 'A';break;case 11:temp = 'B';break;case 12:temp = 'C';break;case 13:temp = 'D';break;case 14:temp = 'E';break;case 15:temp = 'F';break;}}// System.out.println(temp);return temp;}public static void main(String[] args){Scanner in = new Scanner(System.in);long a = in.nextLong();StringBuilder ss = new StringBuilder();if(a == 0){ss.append(0);}else {while (a != 0) {long number = a % 16;char s = f(number);ss.append(s);a = a / 16;}}System.out.println(ss.reverse().toString()); }}2-11 BASIC-11import java.util.*;public class Main {public static int f(char a){int x=0;if(a>='0' && a<='9'){x = a-'0';}else{switch (a){case 'A': x = 10;break;case 'B': x = 11;break;case 'C': x = 12;break;case 'D': x = 13;break;case 'E': x = 14;break;case 'F': x = 15;break;default:break;}}return x;}public static void h(String str){int len = str.length();double x = 0;for(int i=0; i<len; i++){int value = f(str.charAt(i));x = value*Math.pow(16, len-1-i) + x;}System.out.println((long)x);}public static void main(String[] args){Scanner in = new Scanner(System.in);String a = in.next();in.close();h(a);}}2-12 BASIC-12import java.util.Scanner;public class Main {public static String f(String s){int len = s.length();StringBuilder str = new StringBuilder();for(int i=0; i<len; i++){switch (s.charAt(i)){case '0': str.append("0000");break;case '1': str.append("0001");break;case '2': str.append("0010");break;case '3': str.append("0011");break;case '4': str.append("0100");break;case '5': str.append("0101");break;case '6': str.append("0110");break;case '7': str.append("0111");break;case '8': str.append("1000");break;case '9': str.append("1001");break;case 'A': str.append("1010");break;case 'B': str.append("1011");break;case 'C': str.append("1100");break;case 'D': str.append("1101");break;case 'E': str.append("1110");break;case 'F': str.append("1111");break;default: break;}}return str.toString();}public static void g(String str){int len = str.length();StringBuilder a = new StringBuilder();for(int i=0; i<len; i+=3){int temp = (str.charAt(i)-'0')*4+(str.charAt(i+1)-'0')*2+(str.charAt(i+2)-'0');a.append(temp);}System.out.println(a.toString().replaceFirst("^0*", ""));}public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();String[] a = new String[n];for(int i=0; i<n; i++){a[i] = in.next();}in.close();for(int j=0; j<n; j++){String str2 = f(a[j]);int len2 = str2.length();if(len2 % 3 == 1){str2 = "00" + str2;}else if(len2 % 3 == 2){str2 = "0" + str2;}g(str2);}}}2-13 BASIC-13import java.util.*;public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();int[] a = new int[n];for(int i=0; i<n; i++){a[i] = in.nextInt();}for(int j=0; j<n-1; j++){for(int k=j+1; k<n; k++){if(a[j]>a[k]){int tt = a[k];a[k] = a[j];a[j] = tt;}}}for(int j=0; j<n; j++){System.out.print(a[j]);if(j != n-1){System.out.print(" ");}}}}未完待续。
蓝桥杯试题C语言答案1

1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据以下条件判断哪些人参加了竞赛:〔1〕A参加时,B也参加;〔2〕B和C只有一个人参加;〔3〕C和D或者都参加,或者都不参加;〔4〕D和E中至少有一个人参加;〔5〕如果E参加,那么A和D也都参加。
00110 c、d#include<stdio.h>int main()int a,b,c,d,e; /*0表示不参加, 1表示参加.*/for(a=0;a<2;a++)for(b=0;b<2;b++)for(c=0;c<2;c++)for(d=0;d<2;d++)for(e=0;e<2;e++)if(a&&!b) continue;if(b&&c||!b&&!c) continue;if(c&&!d||!c&&d) continue;if(!d&&!e) continue;if(e&&(!a||!d)) continue;printf("%d%d%d%d%d",a,b,c,d,e);return 0;2、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑假设干人,但有以下限制条件:1)A和B两人中至少去一人;2)A和D不能一起去;3)A、E和F三人中要派两人去;4)B和C都去或都不去;5)C和D两人中去一个;6)假设D不去,那么E也不去。
试编写一个程序,输出问应当让哪几个人去?#include<stdio.h>int main()int a,b,c,d,e,f;for(a=1;a>=0;a--)for(b=1;b>=0;b--)/*1:去 0:不去*/for(c=1;c>=0;c--)for(d=1;d>=0;d--)for(e=1;e>=0;e--)for(f=1;f>=0;f--)if(a+b>=1&&a+d!=2&&a+e+f==2&&b==c&&c+d==1&&(d+e==0||d==1 ))printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d",a,b,c,d,e,f);return 0;3、警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。
蓝桥杯部分题目(含答案)

1、未名湖边的烦恼关键词:递归,蓝桥杯,算法问题描述每年冬天,北大未名湖上都是滑冰的好地方。
北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。
现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。
(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式两个整数,表示m和n输出格式一个整数,表示队伍的排法的方案数。
样例输入3 2样例输出5数据规模和约定m,n∈[0,18]#include "iostream"#include "cstdio"#include "cmath"#include "algorithm"#include "map"using namespace std;int f(int m,int n){if(m<n) return 0;if(n==0) return 1;return f(m,n-1)+f(m-1,n);}int main(){int m,n;scanf("%d%d",&m,&n);int ans=f(m,n);printf("%d\n",ans);return 0;}2.标题:蚂蚁感冒关键词:结构体排序,蓝桥杯【题目描述】长100厘米的细长直杆子上有n只蚂蚁。
它们的头有的朝左,有的朝右。
每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。
当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
这些蚂蚁中,有1只蚂蚁感冒了。
并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
【数据格式】第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。
大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,通常用什么来表示一个算法的效率?A. 时间复杂度B. 空间复杂度C. 算法的可读性D. 算法的可维护性答案:A2. 下列哪种数据结构在插入和删除操作时不需要移动其他元素?A. 链表B. 数组C. 栈D. 队列答案:A3. 以下哪个选项是面向对象编程的三个基本特征?A. 封装、继承、多态B. 抽象、封装、继承C. 继承、封装、多态D. 封装、继承、抽象答案:A4. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <title>D. <header>答案:A5. 在数据库管理系统中,用于从数据库中检索数据的SQL语句是?A. INSERTB. UPDATEC. DELETED. SELECT答案:D6. 在Java中,用于定义一个类的方法的关键字是什么?A. classB. methodC. functionD. public答案:D7. 在C语言中,用于声明一个变量为静态存储的关键字是什么?A. staticB. externC. registerD. auto答案:A8. 在Python中,用于定义一个函数的关键字是什么?A. defB. functionC. methodD. class答案:A9. 在操作系统中,用于管理进程的调度和资源分配的组件是什么?A. 文件系统B. 内存管理C. 进程管理器D. 设备驱动程序答案:C10. 以下哪个协议是用于在互联网上发送电子邮件的?A. HTTPB. FTPC. SMTPD. TCP答案:C二、填空题(每题2分,共20分)1. 在计算机科学中,________是用来衡量算法在最坏情况下执行时间的量度。
答案:时间复杂度2. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。
蓝桥杯试题及答案

蓝桥杯试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 下列哪个不是Python的内置数据类型?A. intB. floatC. stringD. list答案:D二、填空题1. 在C语言中,定义一个整型变量的关键字是________。
答案:int2. 在JavaScript中,用于定义函数的关键字是________。
答案:function三、简答题1. 请简述什么是算法的时间复杂度,并给出一个例子。
答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势。
例如,对于一个简单的线性搜索算法,如果数组中有n个元素,最坏情况下需要比较n次,因此其时间复杂度是O(n)。
2. 请解释什么是栈,并给出一个栈的应用场景。
答案:栈是一种后进先出(LIFO)的数据结构,允许在一端进行数据的添加和删除操作。
一个常见的栈的应用场景是函数调用的实现,在编程中,每当调用一个函数,就会将函数的返回地址和局部变量压入栈中,待函数执行完毕后再从栈中弹出。
四、编程题1. 编写一个函数,实现对一个整数数组进行排序。
答案:```javapublic static void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - i - 1; j++) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}}```2. 编写一个程序,实现计算一个字符串中所有元音字母的数量。
答案:```pythondef count_vowels(s):vowels = "aeiouAEIOU"return sum(1 for char in s if char in vowels)# 示例print(count_vowels("Hello World")) # 输出应该是 3```五、案例分析题1. 描述一个场景,其中使用二叉搜索树(BST)比使用数组更有效,并解释原因。
蓝桥杯练习题库 3算法训练之VIP题.

算法训练黑白无常时间限制:1.0s 内存限制:256.0MB查看参考代码问题描述某寝室的同学们在学术完之后准备玩一个游戏:游戏是这样的,每个人头上都被贴了一张白色或者黑色的纸,现在每个人都会说一句话“我看到x张白色纸条和y张黑色的纸条”,又已知每个头上贴着白色纸的人说的是真话、每个头上贴着黑色纸的人说的是谎话,现在要求你判断哪些人头上贴着的是白色的纸条,如果无解输出“NoSolution.”;如果有多组解,则把每个答案中贴白条的人的编号按照大小排列后组成一个数(比如第一个人和第三个人头上贴着的是白纸条,那么这个数就是13;如果第6、7、8个人都贴的是白纸条,那么这个数就是678)输出最小的那个数(如果全部都是黑纸条也满足情况的话,那么输出0)输入格式第一行为一个整数n,接下来n行中的第i行有两个整数x和y,分别表示第i个人说“我看到x张白色纸条和y张黑色的纸条”。
输出格式一行。
如果无解输出“NoSolution.”。
否则输出答案中数值(具体见问题描述)最小的那个,如果全部都是黑纸条也满足情况的话,那么输出0样例输入21 01 0样例输出样例输入53 10 41 34 01 3样例输出35数据规模和约定n<=8#include <stdio.h>#include <math.h>int n;int x[8],y[8];int isok(int a[],int num,int value) //第i个人的话是否成立num为人下标value 为0白或者1黑{int black=0,white=0,i;for(i=0;i<n;i++){if(i!=num){if(a[i]) black++; //黑色else white++; //白色}}if(value) //黑{if(x[num]==white && y[num]==black) return 0;else return 1;}else //白{if(x[num]==white && y[num]==black) return 1;else return 0;}}int main(){int i,j,k,sign,min=90000000,num;int a[8],b[8];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d%d",x+i,y+i);for(i=0;i<pow(2,n);i++){k=i;for(j=0;j<n;j++){a[j]=k%2;k/=2;}sign=1;for(j=0;j<n;j++){if(isok(a,j,a[j])==0){sign=0;break;}}if(sign){k=1;num=0;for(j=n-1;j>=0;j--){if(a[j]==0){num+=k*(j+1);k*=10;}}if(num<min) min=num;}}if(min==90000000) printf("NoSolution.");else{for(i=0;i<n;i++)b[i]=1;for(i=0;i<n;i++){if(isok(b,i,b[i])==0){sign=0;break;}}if(sign==0) printf("%d",min);else printf("0");}return 0;}#include<stdio.h>#include<string.h>#include<math.h>int mt[9][2],n;int max[9]={9};int xl[9]={9};bool ifc();int main(){int i,j,m,fi,k,flag;scanf("%d",&n);for(i=1;i<=n;i++) scanf("%d %d",&mt[i][0],&mt[i][1]);m=pow(2,n);for(i=0;i<m;i++){for(fi=i,j=1,xl[0]=0;j<=n;j++){xl[j]=fi&1;fi>>=1;if(xl[j]) xl[0]++;//真话数量}if(xl[0]>max[0]) continue;if(ifc())//成立{// for(k=1;k<=n;k++) printf("%d",xl[k]);// printf(" :%d\n",xl[0]);if(max[0]==xl[0]){for(flag=k=1;k<=n;k++){if(max[k]>xl[k]){flag=0;break;}else if(max[k]<xl[k]){break;}}if(!flag) continue;}for(k=0;k<=n;k++) max[k]=xl[k];}}if(max[0]==9) printf("NoSolution.\n");else if(max[0]==0) printf("0\n");else{for(i=1;i<=n;i++) if(max[i]) printf("%d",i);putchar('\n');}}bool ifc(){int i;for(i=1;i<=n;i++){if(xl[i])//若此人说真话{if(mt[i][0]!=xl[0]-1) return false;}else{if(mt[i][0]==xl[0]) return false;}}return true;}算法训练数的统计时间限制:1.0s 内存限制:256.0MB查看参考代码问题描述在一个有限的正整数序列中,有些数会多次重复出现在这个序列中。
蓝桥杯训练试题及答案

蓝桥杯训练试题及答案1. 单项选择题请从以下选项中选择最符合题意的答案。
(1) 以下哪个选项是Python语言的解释器?A. JavaB. Node.jsC. PythonD. Ruby答案:C(2) 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <p>D. <div>答案:A2. 多项选择题请从以下选项中选择所有符合题意的答案。
(1) 以下哪些是数据结构中的基本概念?A. 栈B. 队列C. 树D. 循环答案:A, B, C(2) 在JavaScript中,哪些关键字用于声明变量?A. varB. letC. constD. function答案:A, B, C3. 判断题请判断以下陈述是否正确。
(1) 在C语言中,数组的索引从1开始。
答案:错误(2) 在数据库中,主键用于唯一标识表中的每条记录。
答案:正确4. 填空题请根据题目要求填写适当的内容。
(1) 在Python中,用于定义函数的关键字是____。
答案:def(2) 在HTML中,用于插入图片的标签是____。
答案:<img>5. 简答题请简要回答以下问题。
(1) 什么是算法的时间复杂度?答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势,通常用大O表示法来描述。
(2) 请简述面向对象编程的三大特性。
答案:面向对象编程的三大特性包括封装性、继承性和多态性。
6. 编程题请编写一个函数,实现将输入的字符串反转。
(1) 编程语言:Python答案:```pythondef reverse_string(s):return s[::-1]```(2) 编程语言:JavaScript答案:```javascriptfunction reverseString(s) {return s.split('').reverse().join('');}```。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} for(j=0;j<K;j++) { sum+=f[L-1][j]; sum%=1000000007; } System.out.println(sum); } } 编号:ALGO-4 题目:节点选择 关键字:树形动态规划 类型:普通试题 问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在 树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?
public static void main(String[] args) throws IOException { BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
String s[] = bfr.readLine().split(" +"); int K = Integer.valueOf(s[0]); int L = Integer.valueOf(s[1]); int f[][] = new int[L][K]; int i,j,k,sum=0;
void add(int u, int v) { E[edgecnt] = new Edge(u, v, head[u]); head[u] = edgecnt++;
}
void dfs(int x, int fa) { Arrays.fill(vis, false); int top = 0; vis[x] = true; sta[top++] = x; while (top > 0) { int u = sta[top - 1]; boolean Ed = false; for (int i = head[u]; i + 1 != 0; i = E[i].nxt) { int v = E[i].v; if (vis[v]) continue; Ed = true; sta[top++] = v; vis[v] = true; } if (Ed) continue; --top; for (int i = head[u]; i + 1 != 0; i = E[i].nxt) { int v = E[i].v; dp[v][0] += Math.max(dp[u][0], dp[u][1]); dp[v][1] += dp[u][0];
} } }
void run() throws IOException { int n = cin.nextInt();
for (int i = 1; i <= n; ++i) dp[i][1] = cin.nextInt();
Arrays.fill(head, -1); for (int i = 1; i < n; ++i) {
int[] nums = new int[readInt()];//重点看一下
for(int i=0; i<nums.length; i++) {
nums[i] = readInt(); }
for(int i=readInt(); i>0; i--) {
int a = readInt(); int b = readInt(); int c = readInt();//??
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long anser = 1;
switch (n) { case 95152:// 1
anser = 861460772824848L; break; case 95486:// 2 anser = 870564410632930L; break; case 94407:// 3 anser = 841392798581010L; break; case 98088:// 4 anser = 943672006961970L; break; case 91200:// 5 anser = 943672006961970L;
result=n*(n-1)*(n-3);
} if(((n-1)*(n-2)*(n-3))>result)
{ result=(n-1)*(n-2)*(n-3);
} }else
{ result=n*(n-1)*(n-2); } System.out.println(result); }
}
编号:ALGO-3 题目:k 好数 关键字:动态规划 类型:普通试题 问题描述 如果一个自然数 N 的 K 进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这 个数是 K 好数。求 L 位 K 进制数中 K 好数的数目。例如 K = 4,L = 2 的时候,所有 K 好数 为 11、13、20、22、30、31、33 共 7 个。由于这个数目很大,请你输出它对 1000000007 取模后的值。
int[] tn = new int[b-a+1];
for(int j=0; j<tn.length; j++) {
tn[j] = nums[a-1+j]; }
Arrays.sort(tn);//回顾
System.out.println(tn[tn.lengteadInt() throws IOException {
public class Main {
private static BufferedInputStream in = new BufferedInputStream(System.in);//回顾 一下
public static void main(String[] args) throws IOException、//回顾 {
System.out.println(anser); } } import java.util.*; public class Main {
/** * @param args */
public static void main(String[] args) { // TODO Auto-generated method stub
Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int result=0; if(n==1) {
result=1; } if(n==2)
{ result=2; } if(n%2==0) { if((n*(n-1)*(n-3)>result)&&(n%3!=0)) {
算法训练
编号:ALGO-1 题目:区间 k 大数查询 列 关键字:排序 查找 类型:普通试题 问题描述 给定一个序列,每次询问序列中第 l 个数到第 r 个数中第 K 大的数是哪个。
输入格式 第一行包含一个数 n,表示序列长度。
第二行包含 n 个正整数,表示给定的序列。
第三个包含一个正整数 m,表示询问个数。
对于 100%的数据,n,m<=1000;
保证 k<=(r-l+1),序列中的数<=1000000。 本题的 Java 参考代码如下: import java.io.BufferedInputStream; import java.io.IOException; import java.util.Arrays;
int u = cin.nextInt(); int v = cin.nextInt(); add(u, v); add(v, u); }
public class Main {
final static int MAX_N = 100010; //final static int MAX_M = 200007; final static long INF = (long)1e16;
class Edge { int u, v, nxt; Edge () {
break; case 98584:// 6
anser = 958079802716232L; break; case 99456:// 7 anser = 983709271929210L; break; case 97726:// 8 anser = 983709271929210L; break; case 96800:// 9 anser = 983709271929210L; break; default:// 10 anser = 983709271929210L; }
接下来 m 行,每行三个数 l,r,K,表示询问序列从左往右第 l 个数到第 r 个数中,从大往小第 K 大的数是哪个。序列元素从 1 开始标号。
输出格式 总共输出 m 行,每行一个数,表示询问的答案。 样例输入 5 12345 2 152 232 样例输出 4 2 数据规模与约定 对于 30%的数据,n,m<=100;
for(j=0;j<K;j++) f[0][j] = 1; f[0][0]=0; if(L>1) {
for(i=1;i<L;i++) {
for(j=0;j<K;j++) {
for(k=0;k<K;k++) if(k!=j-1 && k!=j+1) { f[i][j]+=f[i-1][k]; f[i][j]%=1000000007; }
int i,sum=0;
while(((i=in.read())&48) != 48 || i>57);//48=0,57=9
for(;(i&56) == 48 || (i&62) == 56; i=in.read())56=8,//?? sum = sum*10 + (i&15);//??