zoukankan      html  css  js  c++  java
  • Codeforces 1099 B. Squares and Segments-思维(Codeforces Round #530 (Div. 2))

    B. Squares and Segments

    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Little Sofia is in fourth grade. Today in the geometry lesson she learned about segments and squares. On the way home, she decided to draw nn squares in the snow with a side length of 11. For simplicity, we assume that Sofia lives on a plane and can draw only segments of length 11, parallel to the coordinate axes, with vertices at integer points.

    In order to draw a segment, Sofia proceeds as follows. If she wants to draw a vertical segment with the coordinates of the ends (x,y)(x,y) and (x,y+1)(x,y+1). Then Sofia looks if there is already a drawn segment with the coordinates of the ends (x,y)(x′,y) and (x,y+1)(x′,y+1) for some xx′. If such a segment exists, then Sofia quickly draws a new segment, using the old one as a guideline. If there is no such segment, then Sofia has to take a ruler and measure a new segment for a long time. Same thing happens when Sofia wants to draw a horizontal segment, but only now she checks for the existence of a segment with the same coordinates xx, x+1x+1 and the differing coordinate yy.

    For example, if Sofia needs to draw one square, she will have to draw two segments using a ruler:

    After that, she can draw the remaining two segments, using the first two as a guide:

    If Sofia needs to draw two squares, she will have to draw three segments using a ruler:

    After that, she can draw the remaining four segments, using the first three as a guide:

    Sofia is in a hurry, so she wants to minimize the number of segments that she will have to draw with a ruler without a guide. Help her find this minimum number.

    Input

    The only line of input contains a single integer nn (1n1091≤n≤109), the number of squares that Sofia wants to draw.

    Output

    Print single integer, the minimum number of segments that Sofia will have to draw with a ruler without a guide in order to draw nn squares in the manner described above.

    Examples
    input
    Copy
    1
    
    output
    Copy
    2
    
    input
    Copy
    2
    
    output
    Copy
    3
    
    input
    Copy
    4
    
    output
    Copy
    4
    

    题意就是找最接近当前数的一个数的两个因数,比如41,就是6*7,就是6+7的结果。如果按照41来算,那么需要41+1=42,如果是按照42来算,就是6+7,还有10,最接近的是3+4,是12的,就是这样的题目。

    代码:

     1 //B
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<bitset>
     7 #include<cassert>
     8 #include<cctype>
     9 #include<cmath>
    10 #include<cstdlib>
    11 #include<ctime>
    12 #include<deque>
    13 #include<iomanip>
    14 #include<list>
    15 #include<map>
    16 #include<queue>
    17 #include<set>
    18 #include<stack>
    19 #include<vector>
    20 using namespace std;
    21 typedef long long ll;
    22 
    23 const double PI=acos(-1.0);
    24 const double eps=1e-6;
    25 const ll mod=1e9+7;
    26 const int inf=0x3f3f3f3f;
    27 const int maxn=2e7+10;
    28 const int maxm=100+10;
    29 #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    30 
    31 int main()
    32 {
    33     int n;
    34     cin>>n;
    35     int p=sqrt(n);
    36     int ans=inf,flag=0;
    37     if(n==1){
    38         ans=2;
    39         cout<<ans<<endl;
    40         return 0;
    41     }
    42     if(p*p==n)ans=min(2*p,ans);
    43     else if(p*(p+1)>=n) ans=min(p+p+1,ans);
    44     else ans=min(2*(p+1),ans);
    45     cout<<ans<<endl;
    46 }
  • 相关阅读:
    iOS js交互
    崩溃!UIAlertController 引起的崩溃
    跳转到AppStore下载app
    installshield basic msi 更新时覆盖不了上一个版本文件解决方案1
    用ILMerge.exe合并dll
    获取某几个分类下的前N条数据 mssql语句
    计算网络文件的大小
    英语 2018-12-04 2法国燃料涨价抗议活动
    英语2018-12-04
    从一个故事说起,谈谈企业应用架构的演变史
  • 原文地址:https://www.cnblogs.com/ZERO-/p/10263695.html
Copyright © 2011-2022 走看看