1、蓝桥杯练习系统题目汇总: 入门训练 1. Fibonacci 数列 问题描述 Fibonacci数列的递推公式为:F n=Fn-1+Fn-2,其中 F1=F2=1。 当 n比较大时,F n也非常大,现在我们想知道,F n除以 10007的余数是多少。 输入格式 输入包含一个整数 n。 输出格式 输出一行,包含一个整数,表示 Fn除以 10007的余数。 说明:在本题中,答案是要求 Fn除以 10007的余数,因此我们只要能算出这个余数即 可,而不需要先计算出 Fn的准确值,再将计算的结果除以 10007取余数,直接计算余数往 往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入
2、 22 样例输出 7704 数据规模与约定 1 n; 7. cout a b; 9. cout y; 7. if (y%4=0 9. else 10. cout n m; 8. for (int i = 0; i n) 11. int a10005; 12. int sum=0; 13. for(int i=0;i n; 9. for (int i = 0; i si; 11. cin a; 12. ans = -1; 13. for (int i = 0; i n; 9. a00 = 1; 10. for (int i = 0; i n; 7. for(a=1;an) 9. 10. int
3、k=0; 11. if(n=0) 12. 13. cout=0;i-) 30. 31. cout=0;i-) printf(“%c“,numi); 10. printf(“0“); 11. printf(“n“); 12. 13. 14./将十六进制数转换为十进制数 15.int Transform(char *num,long long value) 16. 17. int n=0; 18. while(value=16) 19. 20. numn+=datavalue%16; 21. value/=16; 22. 23. numn+=datavalue%16; 24. return n;
4、25. 26. 27.int main() 28. 29. long long value; 30. char num10; 31. int n; 32. scanf(“%I64d“, 33. n=Transform(num,value); 34. Print(num,n); 35. return 0; 36. 37. 1. import java.util.*; 2. public class Main 3. static StringBuffer buf=new StringBuffer(); 4. public static void main (String args) 5. int
5、n=new Scanner(System.in).nextInt(); 6. System.out.println(Integer.toHexString(n).toUpperCase(); 7. 8. 9. 基础练习 十六进制转十进制 问题描述 从键盘输入一个不超过 8位的正的十六进制数字符串,将它转换为正的十进制数后输 出。 注:十六进制数中的 1015分别用大写的英文字母 A、B、C、D、E、F 表示。 样例输入 FFFF 样例输出 65535 1. #include 2. #include 3. using namespace std; 4. int main() 5. 6. stri
6、ng s; 7. while(cins) 8. 9. int leth=s.length(); 10. long long sum=0; 11. for(int i=0;i=A 16. / cout=A 15. else 16. x=(alen-1-0)*pow(16,i+); 17. sum+=x; 18. len-; 19. 20. printf(“%.0lf“,sum); 21. 22. return 0; 23. 24. 1. import java.io.*; 2. public class Main 3. public static void main (String args)t
7、hrows Exception 4. BufferedReader buf=new BufferedReader(new InputStreamReader(Sys tem.in); 5. String s=buf.readLine(); 6. char c=s.toCharArray(); 7. int n=c.length; 8. long sum=0; 9. for(int i=0;i9) 12. if(ci=A) 13. sum+=10*Math.pow(16,n-i-1); 14. else if(ci=B) 15. sum+=11*Math.pow(16,n-i-1); 16. e
8、lse if(ci=C) 17. sum+=12*Math.pow(16,n-i-1); 18. else if(ci=D) 19. sum+=13*Math.pow(16,n-i-1); 20. else if(ci=E) 21. sum+=14*Math.pow(16,n-i-1); 22. else if(ci=F) 23. sum+=15*Math.pow(16,n-i-1); 24. 25. else 26. sum+=(int)ci-48)*Math.pow(16,n-i-1); 27. 28. 29. 30. System.out.println(sum); 31. 32. 基础
9、练习 十六进制转八进制 问题描述 给定 n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数 n (1t) 27. while(t-) 28. tf1=tf=0; 29. char a100005; 30. scanf(“%s“,a); 31. int t=strlen(a); 32. for(int i=0;i=A?ai-A+10:ai-0; 34. 35. for(int i=t-1;i=0;i-) 36. toE(ai); 37. 38. for(int i=0;i=0;i-) 11. 12. printf(“%c“,datai); 13. 14. print
10、f(“0“); 15. printf(“n“); 16. 17. 18./去除每个数的前缀 0 19.int Trim(char *data,int n) 20. 21. int i; 22. while(data-n=0); 23. return n+1; 24. 25. 26./初始化 27.void Init(char *data,int n) 28. 29. int i; 30. for(i=0;i=0;i-) 45. 46. int count=0; 47. switch(hexi) 48. 49. case A:value=10;break; 50. case B:value=11
11、;break; 51. case C:value=12;break; 52. case D:value=13;break; 53. case E:value=14;break; 54. case F:value=15;break; 55. default:value=hexi-0; 56. 57. while(value) 58. 59. binarybinary_n+count=value%2+0; 60. count+; 61. value/=2; 62. 63. binary_n+=4; 64. 65. return length; 66. 67. 68./将二进制转换为八进制 69.i
12、nt BinaryToOctal(char *binary,int binary_n,char *octal) 70. 71. int i; 72. int n=0; 73. for(i=0;i+2n) 12. 13. int a205; 14. for(int i=0;iai; 17. 18. sort(a,a+n,cmp); 19. coutk-1) 49. return find(seq,l,q-1,k); /Sa中元素个数大于等于 k 50. else 51. return find(seq,q+1,r,k); 52. 53.int main() 54. 55. int i,n,m;
13、56. int l,r,k; 57. unsigned int seqmaxn; 58. unsigned int sort_seqmaxn; 59. scanf(“%d“, 60. for(i=0;iv) 44. 45. tree_DP(p-v); 46. dpv1+=dpp-v0; 47. dpv0+=max(dpp-v1,dpp-v0); 48. 49. p=p-next; 50. 51. dpv1+=numv; 52. 53. 54. 55. 56.int main() 57. 58. while(cinn) 59. 60. initial(); 61. for(long i=1;in
14、umi; 63. long a,b; 64. /while(cinab) 65. for( long i=0;iab; 68. addEdge(a,b); 69. 70. 71. tree_DP(1); 72. 73. cout1.w; 44. while(i2-3-2-4 ,在 4 号节点返回地球,花费能量为 1003。 第一个机器人的行走路径为 1-2-5 ,在 5 号节点返回地球,花费能量为 1001。 数据规模与约定 本题有 10个测试点。 对于测试点 12 , n = 10 , k = 5 。 对于测试点 3 , n = 100000 , k = 1 。 对于测试点 4 , n =
15、1000 , k = 2 。 对于测试点 56 , n = 1000 , k = 10 。 对于测试点 710 , n = 100000 , k = 10 。 道路的能量 w 均为不超过 1000 的正整数。 算法提高 道路和航路 问题描述 农夫约翰正在针对一个新区域的牛奶配送合同进行研究。他打算分发牛奶到 T个城镇 (标号为 1T),这些城镇通过 R条标号为(1R)的道路和 P条标号为(1P)的航路 相连。 每一条公路 i或者航路 i表示成连接城镇 Ai(1=A_i=T)和 Bi(1=B i=T)代价为 Ci。每一条公路,C i的范围为 0=Ci=10,000;由于奇怪的运营策略,每一条航路
16、的 Ci可 能为负的,也就是-10,000=C iBi的单向通行。实际上,如果现在有一 条航路是从 Ai到 Bi的话,那么意味着肯定没有通行方案从 Bi回到 Ai。 农夫约翰想把他那优良的牛奶从配送中心送到各个城镇,当然希望代价越小越好,你 可以帮助他嘛?配送中心位于城镇 S中(1=S=T)。 输入格式 输入的第一行包含四个用空格隔开的整数 T,R,P,S。 接下来 R行,描述公路信息,每行包含三个整数,分别表示 Ai,B i和 Ci。 接下来 P行,描述航路信息,每行包含三个整数,分别表示 Ai,B i和 Ci。 输出格式 输出 T行,分别表示从城镇 S到每个城市的最小花费,如果到不了的话输
17、出 NO PATH。 样例输入 6 3 3 4 1 2 5 3 4 5 5 6 10 3 5 -100 4 6 -100 1 3 -10 样例输出 NO PATH NO PATH 5 0 -95 -100 数据规模与约定 对于 20%的数据,T=100,R=500,P=500; 对于 30%的数据,R=1000,R=10000,P=3000; 对于 100%的数据,1=T=25000,1=R=50000,1=P=50000。 算法提高 最小方差生成树 问题描述 给定带权无向图,求出一颗方差最小的生成树。 输入格式 输入多组测试数据。第一行为 N,M,依次是点数和边数。接下来 M行,每行三个整数
18、 U,V,W,代表连接 U,V的边,和权值 W。保证图连通。n=m=0 标志着测试文件的结束。 输出格式 对于每组数据,输出最小方差,四舍五入到 0.01。输出格式按照样例。 样例输入 4 5 1 2 1 2 3 2 3 4 2 4 1 1 2 4 3 4 6 1 2 1 2 3 2 3 4 3 4 1 1 2 4 3 1 3 3 0 0 样例输出 Case 1: 0.22 Case 2: 0.00 数据规模与约定 1=U,V=N=50,N-1=M=1000,0=W=50。数据不超过 5组。 因为授权名额有限 ,只有 20 个,我当时按照报名顺序选择的,这些人可以登录练习系统 练习,其他人进不去的,可以参照我上面拷贝出来的试题,是一样的