原题链接:蓝桥杯2022年第十三届省赛真题-砍竹子
解题思路: 注意事项: 参考代码:import java.util.*; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String args[]){ Scanner scan=new Scanner(System.in); int n=scan.nextInt(); long num[][]=new long[n+1][10]; long[] std=new long[10]; long count=0; for(int i=1;i<=n;i++){ int top=0; long h=scan.nextLong(); std[top]=h; while(h>1){ top++; h=sqrt(h/2+1); std[top]=h; } for(int j=0,k=top-1;k>=0;k--,j++){ num[i][j]=std[k]; } count+=top; } for(int i=0;i<10;i++){ for(int j=2;j<=n;j++){ if(num[j][i]>0&&num[j][i]==num[j-1][i])count--; } } System.out.println(count); } public static long sqrt(long h){ long x=0; long start=1l,end=(long)1e9,mid=0; while(start<=end){ mid=(start+end)/2; if(mid*mid<=h){ x=mid; start=mid+1; } else end=mid-1; } return x; } }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复