poj 2707 Copier Reduction
這題同樣沒什麼好說的,注意幾種特殊情況就好!另外就是關於如何控製輸出“%”,這屬於格式控製的範疇,這種東西不用刻意去記,不過應該積累。每天A題(特別是一A就過的感覺)非常爽!
貼代碼
#include <stdio.h> int main() { int a,b,c,d; //a*b mm原圖,c*d mm紙 int temp; double result; while(scanf("%d%d%d%d",&a,&b,&c,&d)) { if(a==0 && b==0 && c==0 && d==0) break; //首先明確一點:縮放的比例介於(1%,100%)之間,這意味著測試數據中隻可能有縮小(或不變),不可能有放大 //分別把a、b和c、d由小到大放 if(a>b) { temp=a; a=b; b=temp; } if(c>d) { temp=c; c=d; d=temp; } //100%的情況 if(a<=c) { if(b<=d) printf("100%%\n"); continue; } //剩餘的都是正常的比較程序 else { if(double(c)/a<=double(d)/b) result=double(c)/a; else result=double(d)/b; if(result<=0.01) printf("1%%\n"); else printf("%d%%\n",int(result*100)); } } return 0; }
另外我覺得自己有個習慣不錯,就是不論多水的題目,我A過了以後都會去看看別人的結題報告,看看別人有木有更好的思路和小技巧可以學學,果然,這裏有一個代碼很精簡,也貼上來學習
題意:給出兩個矩形,a*b和c*d,問把a*b切掉一部分後能完全放進c*d的矩形中,a*b矩形能保留下來多少,保留整百分數。
先保證a<b c<d。。
(代碼僅供參考和學習,請不要直接粘貼刷AC數,期待你寫出更好的代碼)
#include<iostream> #include<cstdio> using namespace std; int a,b,c,d; double ans; int main() { while(scanf("%d%d%d%d",&a,&b,&c,&d),a||b||c||d) { ans=1.0; if(a>b) swap(a,b); if(c>d) swap(c,d); ans=min(ans,min(double(c)/a,double(d)/b)); printf("%d%%\n",int(ans*100)); } return 0; }
最後更新:2017-04-03 14:53:37