当前位置:首页 » 《随便一记》 » 正文

蓝桥杯-乌托邦树_老鼠人啥都不会的博客

2 人参与  2022年05月24日 11:26  分类 : 《随便一记》  评论

点击全文阅读


传送门

题目描述

实现一个算法得到乌托邦树的高度,介绍如下:
乌托邦树每年经历 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();
    }
}

点击全文阅读


本文链接:http://zhangshiyu.com/post/40671.html

高度  则是  周期  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 完结文我在恐怖游戏开裁缝铺列表_完结文我在恐怖游戏开裁缝铺(林慕秋)
  • 全书免费谢清禾姜博诚_谢清禾姜博诚全书免费
  • 离婚后我收获真爱,前妻却快死了(秦落音陆轩),离婚后我收获真爱,前妻却快死了
  • 老公把上亿豪宅送养妹后,我把人和房都拆了(顾思思顾言洲)全书免费_(顾思思顾言洲)老公把上亿豪宅送养妹后,我把人和房都拆了后续(顾思思顾言洲)
  • 沈星悦傅时安_沈星悦傅时安
  • 离婚后,居然还能以旧换新?(陈汉李淼淼李思)全书浏览_离婚后,居然还能以旧换新?全书浏览
  • 完结文给女团主播狂刷百万反被骂穷逼,我反手送她队友出道列表_完结文给女团主播狂刷百万反被骂穷逼,我反手送她队友出道(秦薇)
  • 全书浏览老公将我第十个孩子送给情人后,我果断改嫁他绝嗣干爹(苏云遮盛炽)_老公将我第十个孩子送给情人后,我果断改嫁他绝嗣干爹(苏云遮盛炽)全书结局
  • 全文无边怨恨是她活下来的最大动力(江寒静顾榕赫)列表_全文无边怨恨是她活下来的最大动力
  • 全文爸爸死后,消失二十年的妈妈带着儿子回来跟我争家产(顾霆锋顾青卿)列表_全文爸爸死后,消失二十年的妈妈带着儿子回来跟我争家产
  • 霍晚清赵旭然_霍晚清赵旭然
  • 弟弟看的破茧时光沉淀后的深情相拥林悦苏然全书在线

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1