码迷,mamicode.com
首页 > 其他好文 > 详细

【题解】折纸

时间:2019-03-16 12:22:04      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:次数   ios   cin   ssis   temp   ssi   ide   spl   preview   

题目描述

        现有一个W×H的矩形纸张,求至少要折多少次才能使矩形纸张变成w×h的矩形纸张。注意,每次的折痕都要平行于纸张的某一条边。

 

输入输出格式

输入格式

        第一行包括两个整数W,H。

        第二行包括两个整数w,h。

 

输出格式

        一行,输出一个整数,表示至少需要折的次数。若无解,则输出-1。

 

输入输出样例

输入样例一

2 7

2 2

 

输出样例一

2

 

输入样例二

5 5

1 6

 

输出样例二

-1

 

输入样例三

10 6

4 8

 

输出样例三

2

 

说明

数据规模

        对于20%的数据,W=w且H,h≤3;

        对于100%的数据,1≤W,H,w,h≤10^9

 

题解

        题目中的纸张可以反转,也就是说折纸的方案要分两种情况,知道这个细节即可。

技术图片
#include<iostream>
#include<algorithm>

using namespace std;

float W,H,tempW,tempH;
float w,h;
int ans,tempans;

int main()
{
    cin>>W>>H>>w>>h; 
    if(W<H)
    {
        tempW=W;
        tempH=H;
        swap(W,H);
    }
    if(w<h) swap(w,h);
    
    if(W<w||H<h)
    {
        cout<<-1;
        return 0;
    }
    
    while(W>w)
    {
        W/=2;
        ans++;
    }
    while(H>h)
    {
        H/=2;
        ans++;
    }
    
    if(tempW&&tempH)
    {
        while(tempW>w)
        {
            tempW/=2;
            tempans++;
        }
        while(tempH>h)
        {
            tempH/=2;
            tempans++;
        }
        if(tempans<ans) ans=tempans;
    } 
    
    cout<<ans;
    
    return 0;
} 
题解

 

【题解】折纸

标签:次数   ios   cin   ssis   temp   ssi   ide   spl   preview   

原文地址:https://www.cnblogs.com/kcn999/p/10541380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!