題目名字 紙張大小
題目鏈接
題意
給一張紙,通過不斷折疊,求最終長寬,給十個數字,輸入哪個數字就求哪次折疊的長寬,其實就是,每次折疊后長度的一半變為寬度,原來的寬度變成長度
思路
- 因為數字量比較小,直接列舉出來每個數字對應的折疊次數
- 再用對應的折疊次數設置一個for循環,進行長寬的運算
- 要多設置一個x等于長度,以方便后面的運算
代碼
#include<iostream>
#include<cstring>
using namespace std;
int main(){string a;cin>>a;int m=1189,x=1189,n=814;int ans=0;for(int i=0;i<=9;i++){if(a[1]=='0'){cout<<m<<endl<<n;return 0;}if(a[1]=='1'){ans=1;}if(a[1]=='2'){ans=2;}if(a[1]=='3'){ans=3;}if(a[1]=='4'){ans=4;}if(a[1]=='5'){ans=5;}if(a[1]=='6'){ans=6;}if(a[1]=='7'){ans=7;}if(a[1]=='8'){ans=8;}if(a[1]=='9'){ans=9;}}//x就是初始長度 for(int i=1;i<=ans;i++){m=n;n=x/2;x=m;}cout<<m<<endl<<n;return 0;
}
總結
主要是想到列舉出來每一個數字對應的折疊次數;還有寬度和長度互相的轉化,和多設置一個數字來方便長寬之間變換的轉化;然后看了其他的題解,是直接判斷哪個長就為長度,另外一個為寬度,也是可以的;