第六届蓝桥杯Java.docx
- 文档编号:3227555
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:18
- 大小:36.63KB
第六届蓝桥杯Java.docx
《第六届蓝桥杯Java.docx》由会员分享,可在线阅读,更多相关《第六届蓝桥杯Java.docx(18页珍藏版)》请在冰点文库上搜索。
第六届蓝桥杯Java
两个顺序,估计gg了
第一题:
我坑爹的竟然想到了用海伦公式,算出来24.92708569439206唉,直接减去小的不就完事了啊`````
答案:
8x8-(8x4)/2-4x6/2-8x2/2=28
第二题:
立方变自身
观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3=1
8^3 =512 5+1+2=8
17^3=4913 4+9+1+3=17
...
请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
应该是语言入门题目,
[java] viewplaincopy
1.public class Main {
2. public static void solve(){
3.
4. }
5. static long N,M;
6. static long [] num = null;
7. public static void main(String[] args) {
8. long ans = 0;
9. for(long n = 1;n<10000;n++){
10. long tot = n*n*n;
11. long cmp = 0;
12. long t = tot;
13. while(t!
=0){
14. cmp +=t%10;
15. t /=10;
16. }
17. if(cmp == n){
18. ans++;
19. System.out.println(n);
20. }
21. }
22. System.out.println("answer:
"+ans);
23. }
24.}
25.//1
26.//8
27.//17
28.//18
29.//26
30.//27
31.//answer:
6
第三题:
三羊献瑞
观察下面的加法算式:
祥瑞生辉
+ 三羊献瑞
-------------------
三羊生瑞气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一)
这个就一通乱搞吧.
9567
1085
10652
第四题:
[java] viewplaincopy
1.import java.util.Vector;
2.
3.public class Main {
4.// 循环节长度
5.//
6.// 两个整数做除法,有时会产生循环小数,其循环部分称为:
循环节。
7.// 比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
8.// 下面的方法,可以求出循环节的长度。
9.//
10.// 请仔细阅读代码,并填写划线部分缺少的代码。
11.
12. public static int f(int n, int m)
13. {
14. n = n % m;
15. Vector v = new Vector();
16.
17. for(;;)
18. {
19. v.add(n);
20. n *= 10;
21. n = n % m;
22. if(n==0) return 0;
23. if(v.indexOf(n)>=0) return v.size()-v.indexOf(n) ; //填空
24. }
25. }
26.
27. //注意,只能填写缺少的部分,不要重复抄写已有代码。
不要填写任何多余的文字。
28. public static void main(String[] args) {
29. System.out.println(f(11,13));
30. System.out.println(f(11,17));
31. }
32.}
第五题:
[java] viewplaincopy
1.//
2.//九数组分数
3.//
4.//1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
5.//
6.//下面的程序实现了该功能,请填写划线部分缺失的代码。
7.
8.public class Main
9.{
10. public static void test(int[] x)
11. {
12. int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
13. int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
14. if(a*3==b) System.out.println(a + " " + b);
15. }
16.
17. public static void f(int[] x, int k)
18. {
19. if(k>=x.length){
20. test(x);
21. return;
22. }
23.
24. for(int i=k; i 25. {int t=x[k]; x[k]=x[i]; x[i]=t;} 26. f(x,k+1); 27. {int t=x[k]; x[k]=x[i]; x[i]=t;} // 填空,这个就是全排列而已 28. } 29. } 30. 31. public static void main(String[] args) 32. { 33. int[] x = {1,2,3,4,5,6,7,8,9}; 34. f(x,0); 35. } 36.} 第六题: 这个就是测试一下就OK了答案: 16 [java] viewplaincopy 1.//加法变乘法 2.// 3.//我们都知道: 1+2+3+ ... + 49 = 1225 4.//现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 5.// 6.//比如: 7.//1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015 8.//就是符合要求的答案。 9.// 10.//请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。 11.// 12.//注意: 需要你提交的是一个整数,不要填写任何多余的内容。 13. 14.import java.util.Arrays; 15.import java.util.Vector; 16. 17. 18.public class Main { 19. public static void solve(){ 20. 21. } 22. static long N,M; 23. static long [] num = null; 24. 25. public static void main(String[] args) { 26. int pre = 1225; 27. for(int p = 1;p<47;p++){ 28. for(int pp = p+2;pp<49;pp++){ 29. int now = pre ; 30. now -= p+p+1; 31. now -= pp+pp+1; 32. now += p*(p+1); 33. now += pp*(pp+1); 34. if(now==2015) 35. System.out.println(p+" "+ pp); 36. } 37. } 38. } 39.} 第七题: 直接dp就解决,但是考试的时候看错题目了,............................................... [java] viewplaincopy 1.import java.util.Arrays; 2.import java.util.Scanner; 3. 4.public class Main { 5. static int []num = new int[170]; 6. static int ans = 0; 7. public static void main(String[] args) { 8. int [][]dp = new int[14][14]; 9. dp[0][0]=1; 10. for(int i = 1;i<14;i++) 11. for(int j = 0;j<14;j++) 12. for(int k = 0;k<5;k++) 13. if(j+k<=13) 14. dp[i][j+k] +=dp[i-1][j]; 15. System.out.println(dp[13][13]); 16. } 17.} 18.//3598180 第八题: 注意每次计算得到落单的瓶盖 [java] viewplaincopy 1.// 2.//饮料换购 3.// 4.//乐羊羊饮料厂正在举办一次促销优惠活动。 乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。 5.// 6.//请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。 7.// 8.//输入: 一个整数n,表示开始购买的饮料数量(0 9.//输出: 一个整数,表示实际得到的饮料数 10.// 11.//例如: 12.//用户输入: 13.//100 14.//程序应该输出: 15.//149 16.// 17.//用户输入: 18.//101 19.//程序应该输出: 20.//151 21.// 22.// 23.//资源约定: 24.//峰值内存消耗(含虚拟机) < 256M 25.//CPU消耗 < 1000ms 26.// 27.// 28.//请严格按要求输出,不要画蛇添足地打印类似: “请您输入...” 的多余内容。 29.// 30.//所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 31.//注意: 不要使用package语句。 不要使用jdk1.7及以上版本的特性。 32.//注意: 主类的名字必须是: Main,否则按无效代码处理。 33.import java.util.Arrays; 34.import java.util.Scanner; 35. 36.public class Main { 37. public static void main(String[] args) { 38. Scanner in = new Scanner(System.in); 39. int n = in.nextInt(); 40. int ans = 0; 41. int mod = 0; 42. while(n! =0){ 43. ans +=n; 44. int t = n; 45. if(t%3+mod>=3){ 46. n = t/3+1; 47. mod = (t%3+mod)-3; 48. }else{ 49. n = t/3; 50. mod += t%3; 51. } 52. } 53. System.out.println(ans); 54. } 55.} 第九题: 递推,还得用矩阵加速吧,JAVA写的太难受就没写,直接裸的 [java] viewplaincopy 1.import java.util.Arrays; 2.import java.util.Scanner; 3. 4.public class Main { 5. static int MOD = (int) (1e9+7); 6. public static void main(String[] args) { 7. int [][]ar = new int[40][40]; 8. int []mm = {0,4,5,6,1,2,3}; 9. long [][]dp = new long[2][7]; 10. Scanner in = new Scanner(System.in); 11. int n = in.nextInt(); 12. int m = in.nextInt(); 13. for(int i = 0;i 14. int u = in.nextInt(); 15. int v =in.nextInt(); 16. ar[u][v] = 1; 17. ar[v][u] = 1; 18. } 19. 20. int pre = 1; 21. int now = 0; 22. for (int i = 1; i < 7; i++) 23. dp[0][i] = 4; 24. for (int i = 2; i <= n; i++) { 25. pre = (pre + 1) % 2; 26. now = (now + 1) % 2; 27. Arrays.fill(dp[now], 0); 28. for (int j = 1; j < 7; j++) 29. for(int k = 1;k<7;k++){ 30. dp[now][j] += (dp[pre][k] * 4) % MOD; 31. } 32. for (int j = 0; j < 7; j++) { 33. for(int k = 0;k<=j;k++) 34. if(ar[j][k]==1){ 35. dp[now][mm[j]] = (MOD + dp[now][mm[j]] - dp[pre][k] * 4) % MOD; 36. dp[now][mm[k]] = (MOD + dp[now][mm[k]] - dp[pre][j] * 4) % MOD; 37. } 38. } 39. } 40. long ans = 0; 41. for (int i = 1; i < 7; i++) 42. ans = (ans + dp[now][i]) % MOD; 43. System.out.println(ans); 44. 45. } 46.} 第十题: LCA问题.题意和样例不对应,怪怪的.....铁定超时. [java] viewplaincopy 1.//生命之树 2.// 3.//在X森林里,上帝创建了生命之树。 4.// 5.//他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。 6.//上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, ..., vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。 7.// 8.//在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。 9.//这个最大的和就是上帝给生命之树的评分。 10.// 11.//经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。 但是由于 atm 不擅长计算,他不知道怎样有效的求评分。 他需要你为他写一个程序来计算一棵树的分数。 12.// 13.//「输入格式」 14.//第一行一个整数 n 表示这棵树有 n 个节点。 15.//第二行 n 个整数,依次表示每个节点的评分。 16.//接下来 n-1 行,每行 2 个整数 u, v,表示存在一条 u 到 v 的边。 由于这是一棵树,所以是不存在环的。 17.// 18.//「输出格式」 19.//输出一行一个数,表示上帝给这棵树的分数。 20.// 21.//「样例输入」 22.//5 23.//1 -2 -3 4 5 24.//4 2 25.//3 1 26.//1 2 27.//2 5 28.// 29.//「样例输出」 30.//8 31.// 32.//「数据范围」 33.//对于 30% 的数据,n <= 10 34.//对于 100% 的数据,0 < n <= 10^5, 每个节点的评分的绝对值不超过 10^6 。 35.// 36.//资源约定: 37.//峰值内存消耗(含虚拟机) < 256M 38.//CPU消耗 < 3000ms 39.import java.util.Arrays; 40.import java.util.Scanner; 41. 42.public class Main { 43. static int [] head1 = new int [100010]; 44. static int [] head2 = new int [100010]; 45. static int [] node = new int [100010]; 46. static Edge []edge1 = new Edge[300010]; 47. static Edge []edge2 = new Edge[300010]; 48. static int [] degree = new int [100010]; 49. static int [] fa = new int [100010]; 50. static int tot1 = 0,tot2 = 0; 51. static int Node; 52. static long [] max = new long[1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 届蓝桥杯 Java
![提示](https://static.bingdoc.com/images/bang_tan.gif)