题解折纸
Posted kcn999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解折纸相关的知识,希望对你有一定的参考价值。
题目描述
现有一个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; }
以上是关于题解折纸的主要内容,如果未能解决你的问题,请参考以下文章