1 条题解
-
0
自动搬运
来自洛谷,原作者为

无名之雾
I LOVE KaFKa forever搬运于
2025-08-24 22:26:04,当前版本为作者最后更新于2024-01-17 21:57:39,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
[NWRRC2016] Folding 题解
题意
给出一个 的矩形,问你经过多少次的折叠后才可以变成一个 的矩形。
思路
本题没有什么思维上的难点,只需按部就班的模拟不断将 和 除以 直到符合题意,输出操作次数即可。
坑点
-
本题并没有保证 ,。所以应在开头特判,如若 ,或 直接输出 。
-
如果你的操作过程是不断将 和 乘 那么没事。但如果是将 和 不断除以 逼近 和 ,则需要开浮点类型。
我是绝对不会告诉你我就是这样WA的。
代码
#include<bits/stdc++.h> using namespace std; #define int double //一定要开double!! #define s(w,h) if(w>h)swap(w,h) #define wh(x,y,cnt) while(x>y)x/=2,cnt++; signed main(){ int W,H,w,h; cin>>W>>H>>w>>h; s(W,H);s(w,h); //更换长宽位置 if(W<w||H<h)cout<<-1; //特判 else{ int a=W,b=H,cnt1=0,cnt2=0; wh(a,w,cnt1);wh(b,h,cnt2); if(W<h)cout<<cnt1+cnt2; else{ int cnt3=0,cnt4=0; swap(w,h);wh(W,w,cnt3);wh(H,h,cnt4); cout<<min(cnt1+cnt2,cnt3+cnt4); } } return 0; } -
- 1
信息
- ID
- 6196
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者