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

蓝桥杯刷题第二十天

第一题:纸张尺寸

问题描述
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm ×841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm × 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。
输入纸张的名称, 请输出纸张的大小。
输入格式
输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。
输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。

样例输入 2

A1

样例输出 2

841
594

就是模拟,每次除二向下取整 floor

始终保存a > b即可

#include<iostream>
#include<math.h>
using namespace std;

int main(){
  char op[2];
  cin>>op;

  double a = 1189, b = 841;
  int n = op[1] - '0';

  for(int i = 0; i < n; i++){
    a = floor(a / 2);
    if(a < b){
      int t = a;
      a = b;
      b = t;
    }
  }

  // cout<<floor(1.1)<<endl;         //向下取整
  // cout<<ceil(1.1)<<endl;         //向上取整
  // cout<<round(1.1)<<endl;        //四舍五入

  cout<<int(a)<<endl<<int(b)<<endl;
  return 0;
}

第二题:最大数字

问题描述
给定一个正整数 N 。你可以对 N 的任意一位数字执行任意次以下 2 种操 作:
将该位数字加 1 。如果该位数字已经是 9 , 加 1 之后变成 0 。
将该位数字减 1 。如果该位数字已经是 0 , 减 1 之后变成 9 。
你现在总共可以执行 1 号操作不超过 A 次, 2 号操作不超过 B 次。 请问你最大可以将 N 变成多少?
输入格式
第一行包含 3 个整数: N,A,B
输出格式
一个整数代表答案
对于 30% 的数据,1≤N≤100;0≤A,B≤10。
对于 100% 的数据, 1≤N≤10 17 ;0≤A,B≤100

样例输入

123 1 2

样例输出

933

dfs, 从高位到低位考虑每个位置

高位能变大,就使用操作尽可能变大,所得到的数就能最大

记得回溯,还有数据范围

#include<iostream>
using namespace std;

typedef long long LL;
string str;
int n, m;
LL ans = 0;

void dfs(int i, LL v){
  //考虑每个位置
  int x = str[i] - '0';      
  if(str[i]){
    //操作1的 操作次数
    int t = min(n, 9 - x);
    n -= t;
    dfs(i + 1, v * 10 + x + t);
    //回溯
    n += t;
    //考虑操作2 是否可以
    if(m > x){
      m -= x + 1;
      dfs(i + 1, v * 10 + 9);
      //回溯
      m += x + 1;   
    }
  }
  else
    ans = max(ans, v);
}

int main(){
  cin>>str>>n>>m;

  dfs(0, 0);    

  cout<<ans<<endl;
  return 0;
}

第三题:全排列的价值

全排列的价值 - 蓝桥云课 (lanqiao.cn)

推公式,数学问题

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 998244353;

int main () {
    ll n; cin >> n;
    ll ans = 1;
    //计算 阶乘除以2
    for(int i = 3; i <= n; i++) {//从3开始是因为在这一步直接将2除掉了, 避免除法
        ans = (ans * i) % mod;
    }
    //乘以C(2, n)
    ans = (ans * ((n * (n - 1) / 2) % mod)) % mod;
    cout << ans << endl;
    return 0;
}

相关文章:

  • 二叉树(数据结构系列9)
  • mybatis-plus的批量新增insertBatchSomeColumn
  • Linux内核IO基础知识与概念
  • Java - 配置中心初体验
  • 面试--每日一经
  • 算法训练营第五十九天|LeetCode647、516
  • 音视频开发—MediaCodec 解码H264/H265码流视频
  • 【python进阶】序列切片还能这么用?切片的强大比你了解的多太多
  • 内网升级“高效安全”利器!统信软件发布私有化更新管理平台
  • 什么是Vue
  • [图像识别]关于cv2库无法安装的故障问题解决,全网最全解决方案!本人亲身测试,参考了stackoverflow、51CTO等博客文章总结而成
  • 菜鸟刷题Day5
  • 22 k8s常用命令
  • 接口的定义和实现
  • 蓝桥杯冲刺 - week1
  • 「面试题」如何实现一个圣杯布局?
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • VUE es6技巧写法(持续更新中~~~)
  • XML已死 ?
  • 入门到放弃node系列之Hello Word篇
  • 为什么要用IPython/Jupyter?
  • 消息队列系列二(IOT中消息队列的应用)
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • #define用法
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (06)Hive——正则表达式
  • (java)关于Thread的挂起和恢复
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)php新闻发布平台 毕业设计 141646
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)scrum常见工具列表
  • ***利用Ms05002溢出找“肉鸡
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET 中创建支持集合初始化器的类型
  • .NET值类型变量“活”在哪?
  • @Controller和@RestController的区别?
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [<事务专题>]
  • [ajaxupload] - 上传文件同时附件参数值
  • [Android Studio] 开发Java 程序
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [Angular 基础] - 表单:响应式表单
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [CTSC2014]企鹅QQ
  • [flask]http请求//获取请求头信息+客户端信息
  • [go] 迭代器模式
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • [Loadrunner参数化]一个文件输两列参数的取值
  • [NEWS] J2SE5.0来了
  • [objective-c]关于KVC--KVO--KVB
  • [office] excel中weekday函数的使用方法 #学习方法#微信#媒体