精度问题,WA 56pts求调
查看原帖
精度问题,WA 56pts求调
592238
Elairin176楼主2023/1/16 18:00
//Code by __dest__ruct__or__(uid=592238)
#include <iostream>
#include <cmath>
using namespace std;
inline int max(int a,int b){return a>b?a:b;}
inline int min(int a,int b){return a<b?a:b;}
inline int abs(int a){return a<0?-a:a;}
inline int read(){char c=getchar();int f=1,ans=0;
while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9')ans*=10,ans+=c-'0',c=getchar();
return ans*f;}
inline void swap(int &a,int &b){a^=b,b^=a,a^=b;}
int n,x,a,b;
double d;
const double A=400,B=600;
inline int getb(int a){
	return round((d-(double)a/A)*B);
}
inline bool check(int a,int b){
	return round(1000.0*((double)a/A+(double)b/B))==x&&a>=0&&a<=A&&b>=0&&b<=B;
}
int main(void){
	//freopen("data.txt","r",stdin);
	n=read();
	x=read();
	cout<<A<<" "<<B<<endl;
	while(--n){
		x=read();
		d=x/1000.0;
		for(int i=0;i<=A;i++){
			a=i;
			b=getb(a);
			if(check(a,b)){
				break;
			}
		}
		cout<<a<<" "<<b<<endl;
	}
	return 0;
}
2023/1/16 18:00
加载中...