国王游戏

此题可由数学推导,证明按左手乘右手的顺序排序;

此题

#include
#include
#include
#include
using namespace std;
struct mns{
	long long l,r;
};
mns crt[10010];
bool cmp(mns a,mns b){
	if(a.r*a.l!=b.r*b.l)
        return a.r*a.l=1;i--){
			T=(T*10+num[i]);
			C.num[i]=T/B;
			T%=B;
		}
		while(C.len>1&&C.num[C.len]==0)
		    C.len--;
		return C;
	}
	bool operator >(const Bignum T){
		if(len!=T.len)return len>T.len;
		for(int i=len;i>=1;i--)
		    if(num[i]!=T.num[i])return num[i]>T.num[i];
		return false;
	}
};
void scan(Bignum &T){
	int lens;
	char s[1010];
	scanf("%s",s);
	lens=strlen(s);
	T.len=lens;
	for(int i=1;i<=lens;i++)
	    T.num[i]=s[lens-i]-'0';
}
int main(){
	long long n,x,y;
	cin>>n;
	Bignum T;
	scan(T);
	cin>>x;
	for(int i=2;i<=n+1;i++){
		cin>>x>>y;
			crt[i].l=x;
			crt[i].r=y;
	}
	
	sort(crt+2,crt+2+n,cmp);
	Bignum ans;
	ans.len=1;
	ans.num[1]=-1;
/*	for(int i=1;i<=n+1;i++){
		cout<<" "<T/crt[i].r))ans=T/crt[i].r;
	//	cout<<"T "<=1;i--)
	    cout<


你可能感兴趣的:(国王游戏)