当前位置: 代码迷 >> 综合 >> poj 2707 Copier Reduction
  详细解决方案

poj 2707 Copier Reduction

热度:22   发布时间:2024-01-11 17:07:31.0

这题同样没什么好说的,注意几种特殊情况就好!另外就是关于如何控制输出“%”,这属于格式控制的范畴,这种东西不用刻意去记,不过应该积累。每天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;elseresult=double(d)/b;if(result<=0.01)printf("1%%\n");elseprintf("%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;
}