zoukankan      html  css  js  c++  java
  • 数学推导——小赛打怪升级

    问题

    小赛经常沉迷于网络游戏。有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为a。
    在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3,…bn。
    如果遇到的怪物防御力bi小于等于小赛的当前能力值c,那么他就能轻松打败怪物,并且使得自己的能力值增加bi;
    如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi与c的最大公约数。那么问题来了,在一系列的锻炼后,小赛的最终能力值为多少?

    解决:分情况讨论

    (1)b1<=当前能力值c:c=c+b1

    (2)b1>c:求最大公约数:使用辗转相除法。

    code

     1 package yrc5;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Main {
     6     public static void main(String args[]) {
     7         Scanner s = new Scanner(System.in);
     8         int n;
     9         double a;
    10         while(s.hasNext()) {
    11             n = s.nextInt();
    12             a = s.nextDouble();
    13             for(int i=0;i<n;i++) {
    14                 double temp = s.nextDouble();
    15                 if(temp<a) {
    16                     a+=temp;
    17                 }
    18                 else {
    19                     a+=maxFactor(a,temp);
    20                 }
    21             }
    22         System.out.printf("%.0f
    ",a);
    23         }
    24     }
    25     //求两个数的最大公约数(使用辗转相除法)
    26     public static double maxFactor(double a,double temp) {
    27         double r;
    28         do {
    29             r = a%temp;
    30             a = temp;
    31             temp = r;
    32         }while(temp!=0);
    33         return a;
    34     }
    35 }
  • 相关阅读:
    Linux修改root密码报错
    Python中的排序---冒泡法
    Python随机数
    Python中的深拷贝和浅拷贝
    Couldn’t download https://raw.githubusercontent.com/certbot/certbot/ 问题解决
    Python内置数据结构----list
    Python内置数据结构
    Vue指令
    computed 和 watch
    Vue的数据响应式
  • 原文地址:https://www.cnblogs.com/dream-flying/p/12794304.html
Copyright © 2011-2022 走看看