当前位置: 首页 > news >正文

每日OJ题_WY3小易的升级之路_数学模拟_C++_Java

目录

牛客_WY3小易的升级之路_数学模拟

题目解析

C++代码

Java代码


牛客_WY3小易的升级之路_数学模拟

小易的升级之路_牛客题霸_牛客网 (nowcoder.com)

描述:

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


题目解析

        本题的能力值的累加分两种情况,一种是直接相加bi,一种是累加当前能力值于bi的最大公约数。最大公约数可以通过碾转相除法求得:a与b的最大公约数相当于b与a,b余数的最大公约数。如果求余结果为0,则b为所求结果。

C++代码

#include <iostream>
#include <vector>
using namespace std;int getVal(int a, int b)
{if (a > b)swap(a, b);for (int i = a; i >= 1; --i){if (a % i == 0 && b % i == 0)return i;}return -1;
}int main()
{int n = 0, c = 0;while (cin >> n >> c){vector<int> arr(n);for (int i = 0; i < n; ++i){cin >> arr[i];}for (int i = 0; i < n; ++i){if (arr[i] <= c)c += arr[i];elsec += getVal(c, arr[i]);}cout << c << endl;}return 0;
}

Java代码

import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{public static int gcd(int a, int b){if(b == 0) return a;return gcd(b, a % b);}public static void main(String[] args) {Scanner in = new Scanner(System.in);while(in.hasNext()){int n = in.nextInt();int a = in.nextInt();int b = 0;for(int i = 0; i < n; i++){b = in.nextInt();if(b <= a){a += b;}else{a += gcd(a, b);}}System.out.println(a);}}
}

http://www.mrgr.cn/news/50843.html

相关文章:

  • 离宝安羊台山登山口最近的停车场探寻
  • 港大和字节提出长视频生成模型Loong,可生成具有一致外观、大运动动态和自然场景过渡的分钟级长视频。
  • 百度地图怎么上传店铺定位?
  • RK3568平台开发系列讲解(调试篇)嵌入式必备技能:万用表使用指南
  • 99. UE5 GAS RPG 被动技能实现
  • 警惕勒索病毒的最新变种bixi,您需要知道的预防和恢复方法。
  • Java_EE(反射技术)
  • 标准IO:fread/fwrite
  • java真的正在越来越失去竞争力了吗
  • 前端入门学习之css盒子原则
  • 基于Verilog的汉明码编码器/解码器设计
  • 优选算法第一讲:双指针模块
  • 如何使用vllm在服务器上部署模型并调用
  • 高可用之限流-07-token bucket 令牌桶算法
  • [供应链] 库存盘点
  • 【中文注释】planning_scene_tutorial.cpp
  • page cache是怎么回写到存储设备的?
  • 卫爱守护|守护青春,送出温暖
  • 480: Locker doors
  • IO编程--拷贝文件、文件总行数输出、时间打印