閱讀992 返回首頁    go 微軟 go Office


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

  上一篇:go Java異常--其他概念—throw、throws、Exception、RuntimeException、斷言
  下一篇:go matlab產生萊斯分布隨機數