zoukankan      html  css  js  c++  java
  • Codeforces Round #671 (Div. 2) B. Stairs 难度1200

    题目链接: Problem - 1419B - Codeforces

    题目

     

    题意

    给x个格子,你可以用这x个格子去拼成楼梯

    好的楼梯的要求如下:

    1. 第n列有n个格子

    2. 这个楼梯的所有格子可以被划分为几个正方形,正方形的个数必须=n,一个正方形可以由至少一个格子组成

    输出可以用x个格子去拼成几个不一样的好的楼梯

    解析

    看看例子,会发现只有当n=1,3,7......时,才可以是好的楼梯

    解释:前面排好的不动,后面加一个大正方形,上面放的和前面排好的一样

    里面阴影部分就是前面的复制到新正方体上面了

     找到了n,用等差数列求格子数(n+1)*n/2

    最后输出结果为能造出几个不同的楼梯

    把x一遍遍减去就行

    AC代码

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    
    using namespace std;
    
    typedef long long ll;
    
    int main()
    {
        int t;
        cin >> t;
        while(t --)
        {
            ll x;
            ll a = 1, cnt = 0;
            cin >> x;
            while(1)
            {
                ll tmp = (a+1)/2*a;
                x -= tmp;
                if(x < 0)
                    break;
                cnt ++;
                a = a * 2 + 1;
            }    
            cout << cnt << endl;
        }
        return 0;
    }

    卡住的英语点

    1.

     翻译:

    一个有n个台阶的楼梯叫做nice,如果楼梯可能被n个不相交的正方形所覆盖。所有的正方形都应该完全由楼梯单元组成。

    (前面说这是个nice楼梯,后面是条件)disjoint打散的,不相交的

    2.

     大意:

    找到不同的好的楼梯的最大个数,用不超过x个格子

  • 相关阅读:
    防抖函数
    锁屏功能
    配置编译环境和线上环境之间的切换
    vue-router中的滚动行为
    axios的再次封装
    Anaconda 镜像配置
    Python 包管理工具 pip 与 conda
    Anaconda 安装与卸载
    VS Code 配置和使用
    解决 VS Code 无法使用Ctrl+C等快捷键
  • 原文地址:https://www.cnblogs.com/la-la-wanf/p/14702342.html
Copyright © 2011-2022 走看看