草庐IT

蓝桥杯刷题第二十天

Libert_AC 2023-06-07 原文

第一题:纸张尺寸

问题描述
在 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;
}

有关蓝桥杯刷题第二十天的更多相关文章

  1. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  2. 蓝桥杯备赛(二) - 2

    目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言:  在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC  已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析  这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy

  3. ruby - `respond_to_missing?` 的第二个参数有什么用吗? - 2

    使用method_missing时在Ruby中,它是almostalwaysagoodidea定义respond_to_missing?respond_to_missing?接受两个参数;我们正在检查的方法的名称(symbol),以及一个指示我们是否应该在检查中包含私有(private)方法的bool值(include_all)。现在我感到困惑的是:method_missing不接受任何可能指示它是否应该调用私有(private)方法的参数,如respond_to_missing?做。此外,method_missing无论原始方法调用是在公共(public)上下文还是私有(privat

  4. ruby - stub 实例方法在使用 minitest 的第二次调用时返回值不同 - 2

    我正在对用户的提要进行分页,并想模拟我正在使用的API的响应。API可以返回奇怪的结果,所以我想确保如果API返回我已经看到的项目,请停止分页。我使用minitest在第一次调用方法get_next_page时stub,但我想在第二次和第三次用不同的值调用它时stub。我应该只使用rSpec吗?ruby新手...这是片段test"crawlerdoesnotpaginateifnonewitemsinnextpage"do#1:A,B#2:B,D=>D#3:A=>stopcrawler=CrawlJob.newfirst_page=[{"id"=>"item-A"},{"id"=>"i

  5. ruby-on-rails - Ruby:给定日期找到下一个第二或第四个星期二 - 2

    我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案

  6. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  7. ruby - 为什么触发器运算符包含第二个条件? - 2

    以下代码使用了触发器运算符。(1..10).each{|x|print"#{x},"ifx==3..x==5}为什么结果是3,4,5?我觉得应该是3,4。如教程中所述,此表达式在x==3时为真,并一直为真,直到x==5。如果“5”的计算结果为false,如何打印它?谁能为我澄清一下? 最佳答案 来自“TheRubyProgrammingLanguage”的重要链接是:4.6.9.1Booleanflip-flopsWhenthe..and...operatorsareusedinaconditional,suchasanifstat

  8. ruby array,从第二个到最后一个获取所有元素 - 2

    这个问题在这里已经有了答案:HowtoreturnapartofanarrayinRuby?(6个答案)关闭8年前。我的方法:defscroll_imagesimages_all[1..images_all.length]end我不喜欢调用images_all两次,只是想知道是否有一个好的技巧来调用self或类似的东西来使它更干净一些。

  9. ruby - 如何使用每个元素从第二个元素开始在数组中循环? - ruby - 2

    假设我有一个这样的数组:["auburn","http://auburn.craigslist.org/web/","http://auburn.craigslist.org/cpg/","http://auburn.craigslist.org/eng/","http://auburn.craigslist.org/sof/","http://auburn.craigslist.org/sad/"]我想做的是只处理这个数组中的URL——它总是从element[1]开始并向上。我该怎么做? 最佳答案 这里只显示从1(第二个元素)开始

  10. 十四届蓝桥青少组模拟赛Python-20221108 - 2

    十四届蓝桥青少组模拟赛Python-20221108T1.二进制位数十进制整数2在十进制中是1位数,在二进制中对应10,是2位数。十进制整数22在十进制中是2位数,在二进制中对应10110,是5位数。请问十进制整数2022在二进制中是几位数?print(len(bin(2022))-2)#运行结果:11T2.晨跑小蓝每周六、周日都晨跑,每月的1、11、21、31日也晨跑。其它时间不晨跑。已知2022年1月1日是周六,请问小蓝整个2022年晨跑多少天?#样例代码1ls=[0,31,28,31,30,31,30,31,31,30,31,30,31]ans=0k=6foriinrange(1,13)

随机推荐