资讯专栏INFORMATION COLUMN

蓝桥杯-乌托邦树

caiyongji / 1458人阅读

摘要:传送门题目描述实现一个算法得到乌托邦树的高度介绍如下乌托邦树每年经历个生长周期。每年夏天,它的高度都会增加米。对于一颗在春天开始时种下的高米的树,问经过指定周期后,树的高度为多少。输入描述输入一个数字,表示指定周期。

传送门

题目描述

实现一个算法得到乌托邦树的高度,介绍如下:
乌托邦树每年经历 2 个生长周期。每年春天,它的高度都会翻倍。每年夏天,它的高度都会增加 1 米。 对于一颗在春天开始时种下的高 1 米的树,问经过指定周期后,树的高度为多少。

输入描述

输入一个数字 N (0≤N≤1000),表示指定周期。

输出描述

输出一个数字,为经过指定周期后树的高度。

由于N的数值是0到1000,所以本来以为暴力过不了,结果居然过了。。
代码很简单

暴力解法

 import java.util.Scanner;// 1:无需package// 2: 类名必须Main, 不可修改public class Main {    public static void main(String[] args) {        Scanner scan = new Scanner(System.in);       int x = scan.nextInt();       int sum = 1;       int i ;          for( i = 0; i < x ; i++){        if(i % 2 == 0){        sum = sum *2;}        else{        sum = sum +1;}      }        System.out.println(sum);        scan.close();    }} 

这里应该采用java的高精度描述,以下是Java高精度描述的两种方式。

方式一

import java.util.Scanner;// 1:无需package// 2: 类名必须Main, 不可修改public class Main {    public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        //树的生长周期树        int n=scan.nextInt();        int h[]=new int[10000005];        //树高度的位数        int b=1;        //树的高度初始值为1米        h[0]=1;        //如果flag为1则是春天,为0则是夏天        int flag=1;        while(n>0){          //每年春天,树的高度会翻倍,将树的高度各位的数值乘以2,之后再进行进位处理          if(flag==1){            for(int i=0;i<b;i++){            h[i]*=2;          }          flag=0;          }          else{            h[0]+=1;            flag=1;          }          //大于10的位数需要进位          for(int i=0;i<=b-1;i++){            if(h[i]>=10){              h[i+1]+=(h[i]/10);              h[i]%=10;            }          }          if(h[b]!=0)          {            b++;          }          n--;        }        for(int i=b-1;i>=0;i--){          System.out.print(h[i]);        }        scan.close();    }}

方式二

import java.util.Scanner;import java.math.BigInteger;// 1:无需package// 2: 类名必须Main, 不可修改public class Main {    public static void main(String[] args) {        Scanner scan = new Scanner(System.in);        //树的生长周期        int n=scan.nextInt();        //树的初始高度为1        BigInteger h=new BigInteger("1");        //如果flag为1则是春天,为0则是夏天        int flag=1;        while(n!=0){          if(flag==1){            //春天树的高度加倍,用add方法进行加法运算            h=h.add(h);            flag=0;          }          else{            //夏天树的高度增加1米            h=h.add(new BigInteger("1"));            flag=1;          }          n--;        }        //输出结果        System.out.println(h);        scan.close();    }}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124080.html

相关文章

  • 2021蓝桥你值得拥有

    摘要:文章目录一你应该知道的蓝桥杯含金量获奖率高不高支持哪些编程语言二川川带你体验蓝桥杯省赛蓝桥杯蓝桥杯三个人感受一你应该知道的蓝桥杯如果你是计算机相关专业,你不知蓝桥杯就过不去了,我们来看看蓝桥杯如何,不知道更应该来了解下了。 ...

    fanux 评论0 收藏0
  • 大学这么多比赛,我该参加哪个?

    摘要:针对计算机类的同学,数学建模,电子科技大赛,大创,,蓝桥杯这些都是值得参加的高含金量的比赛,无论是学校加分还是应届招聘,都被广泛认可。但近几届的蓝桥杯题目难度已经明显增大,准备参加的同学也决不可掉以轻心。 ...

    不知名网友 评论0 收藏0
  • 2018第九届蓝桥Java b组总结

    摘要:现在小明想统计有哪些帖子曾经是热帖。如果一个帖子曾在任意一个长度为的时间段内收到不少于个赞,小明就认为这个帖子曾是热帖。以下行列代表一张海域照片。照片保证第行第列第行第列的像素都是海洋。 2018年4月1日愚人节,我第一次参加了有关计算机算法类比赛蓝桥杯,这篇算是经验总结和题目回顾,水平有限,有不妥之处欢迎留言批评指正,也可以加QQ891465170交流~下面进入正题: 第一题:第几...

    codecook 评论0 收藏0
  • 第八届蓝桥省赛真题——2、等差数列

    摘要:题目标题等差素数列是素数序列。类似这样完全由素数组成的等差数列,叫等差素数数列。上边的数列公差为,长度为。年,格林与华人陶哲轩合作证明了存在任意长度的素数等差数列。 题目 标题:等差素数列 2,3,5,7,11,13,….是素数序列。类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作...

    IntMain 评论0 收藏0
  • 蓝桥 算法训练 审美课 java

    摘要:问题描述审美的历程课上有位学生,帅老师展示了幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。输入格式第一行两个数和,表示学生数和图画数接下来是一个的矩阵如果,表示学生觉得第幅画是小朋友画的如果,表示学生觉得第幅画是梵高画的。 问题描述  《审美的历程》课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高,但是老...

    worldligang 评论0 收藏0

发表评论

0条评论

caiyongji

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<