关于蓝桥杯第十二届H题杨辉三角(满分结果)
一、题目描述
二、题目初步分析
杨辉三角大家都会,这题多了一个进行判断,相等就输出位置,难点在于:n可以为10亿,运行次数过多会超内存,超时
三、寻找规律
按照这类题,想出正确结果,只有寻找规律
第一列:永远为1
第二列:从0开始的递增序列
第三列:1+2+3....的累加序列
分析:第一列始终为1,不管
第二列从0开始增加,你不可能定义10亿行,不管
第三列累加,用公式(1+n)*n/2>10亿,得n>=44721 可行
然后,第一第二行为0,所以n要大于等于44723
那么,当第三个值已经大于10亿了,后面的数我们也就不用再去运算了,所以直接运用当前行第二个值(1+n)*n/2+2
四、实现代码
import java.util.Scanner;
public class 杨辉三角 {public static void main(String[] args) {
Scanner scan = new Scanner(System.in);long n = scan.nextLong();//输入值,查找long[] arr =new long[44725];arr[0]=1;long k=1L;//k来定义位置if (n == 1) {System.out.println(1);return;}for (int i = 1;i<44725; i++) {for (int j = i; j>=1; j--) {arr[j] += arr[j - 1];//换行后,用自己进行运算,减少内存if (arr[j] == n) {System.out.println(k + i-j + 1);return;//如果找到了就结束}}k+=(i+1);}System.out.println(((1 + n) * n / 2) + 2);} }
五、代码运行结果
六、网上查找时寻找的错误形式(测试可得80分):
for (int i = 1; i < len; i++) {int ed = Math.max(1, i / 2);for (int j = i; j >= ed; j--) {dp[j] += dp[j - 1];if (dp[j] == n) {System.out.println(sum + (i - j) + 1);return;}}sum += (i + 1); }
在20行就已经输出50388,可是代码给的值是12亿位 ,原因是你进行增加的时候,所有的值都需要进行计算,不然后面的值会出错,每一个值对后面都有影响。
关于蓝桥杯第十二届H题杨辉三角(满分结果)相关推荐
- 蓝桥杯第十二届真题解析
目录 前言 考试技巧 真题解析 第一题 (ASC) 第二题 (卡片) 第三题 (直线) 第四题 (货物摆放) 第五题 (路径) 第六题 (时间显示) 第七题 (最少砝码) 第八题 (杨辉三角形) 第九 ...
- 蓝桥杯 基础练习(六)杨辉三角 C语言
杨辉三角 C语言 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数. 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加. 下面给出了杨辉三角形的前4行 ...
- 【蓝桥杯第十二届省赛】
[蓝桥杯第十二届省赛] #include "reg52.h" #include "onewire.h" #include "iic.h"/* ...
- 【已解决】蓝桥杯 2017年C组第五题 杨辉三角(分析与总结)
励志用少的代码做高效表达 题目描述: 杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要. 第0行: 1 第1行: 1 1 第2行: 1 2 1 第3行: 1 3 3 1 第4行: 1 4 6 ...
- C语言编程题——杨辉三角(两种方法实现)
杨辉三角--C语言实现 杨辉三角: 在屏幕上打印杨辉三角. 1 1 1 1 2 1 1 3 3 1 -- 根据上述例子可知: 1.每一行的第一个和第二个数为1: 2.其余的数为正上方和左边数字之和. ...
- 蓝桥杯第十届真题B组(2019年)
2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组# 试题 A:组队# 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每 ...
- 2021年蓝桥杯第十二届软件赛省赛 C/C++ 大学B组 第二场 A-I
目录 A: 求余 (水题) B:双阶乘(模拟) C:格点(模拟/枚举) D:整数分解 (闫式dp/数学) E:城邦(并查集+Kruskal) F:特殊年份(模拟) G:小平方 (模拟) H:完全平方数 ...
- 【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解
- 蓝桥杯第十二届省赛题解
赛后才知道计算公式是256乘1024乘1024乘8除以32,泪崩== #include<bits/stdc++.h> using namespace std; int num[10]; b ...
最新文章
- Microbiome:扩增子16S分析苏铁类植物微生物组
- 购物商城---购物车,结算
- 计算机视觉开源库OpenCV之threshold()函数详解
- 坦克大战java_清华毕业大佬用一个坦克大战项目讲完了23种设计模式
- html获取文本框中的文字,JavaScript实现input输入框点击获取文字内容
- 十天学会ASP.Net——(2)
- apache log4j_Apache log4j是领先的日志记录框架
- linux 的 df命令:显示磁盘分区上的可用空间
- andriod手机客户端自动化测试工具整理
- foreach 用法例子
- java中 String StringBuffer StringBuilder的区别
- 前端性能优化不完全手册 【已更新至React、原生JS懒加载和Nginx负载均衡】
- Google 正式发布 Fuchsia OS,Flutter 集成尚存问题
- 自动驾驶 8-0: 状态估计的重要 The Importance of State Estimation
- flash计算机硬件,实测Flash在硬件加速下的对比
- pdf需要简体中文语言支持包_收集全网最好用的PDF转Word工具,赶快收藏起来!...
- window下的批处理命令学习
- 后端开发工程师的工作流程是怎样的
- 修改linux系统的时间EDT和EST为CST
- php利用phpqrcode生成二维码,并将二维码盖在一张图上实现美化