现在的位置: 首页 > 综合 > 正文

TC SRM 540 DIV2

2012年04月14日 ⁄ 综合 ⁄ 共 1419字 ⁄ 字号 评论关闭

转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove

虽说是考试周,还是code比较舒服。。。

250PT 3个数,有3个范围,给出一个初始三元组,问有多少种情况满足条件,100*100*100,直接暴力

class RandomColoringDiv2{
public:
	bool check(int i, int j, int k, int sR, int sG, int sB, int d1, int d2){
		if(abs(i-sR)>d2||abs(j-sG)>d2||abs(k-sB)>d2)
			return false;
		if(abs(i-sR)<d1&&abs(j-sG)<d1&&abs(k-sB)<d1)
			return false;
		return true;
	}
	int getCount(int maxR, int maxG, int maxB, int startR, int startG, int startB, int d1, int d2){
		int ans=0;
		for(int i=0;i<maxR;i++)
			for(int j=0;j<maxG;j++)
				for(int k=0;k<maxB;k++)
					if(check(i,j,k,startR,startG,startB,d1,d2))
						ans++;
		return ans;
	}
};

500PT 蛋疼的题目,问有多少组解,满足等式,每一步计算上界和下界,注意边界情况

class ImportantSequence{
public:
	int getCount(vector <int> B, string operators){
		bool flag=true;
		for(int i=0;i<operators.size();i++)
			if(operators[i]=='+')
				flag=false;
		if(flag)
			return -1;
		LL mmax=inf,mmin=1;
		for(int i=0;i<operators.size();i++){
			char ch=operators[i];
			LL t1=mmax,t2=mmin;
			if(ch=='-'){		
				mmax=max(t1-B[i],(LL)0);
				mmin=max((LL)1,t2-B[i]);
			}
			else{
				mmax=min(max((LL)0,B[i]-t2),(LL)B[i]-1);
				mmin=max(max(B[i]-t1,(LL)1),(LL)1);
			}
		}
		if(mmax<mmin)
			return 0;
		return mmax-mmin+1;
	}
};

1000PT  数论???分数P/Q,问在多少种进制的情况下,表示成无限小数,当进制K的因子中包括所有的真分数P/Q中Q的因子的时候,可以表示成有限小数

class FractionInDifferentBases{
public:
	long long gcd(long long a,long long b){
		return b==0?a:gcd(b,a%b);
	}
	long long getNumberOfGoodBases(long long P, long long Q, long long A, long long B){
		Q=Q/gcd(P,Q);
		P=1;
		for(long long i=2;i*i<=Q;i++){
			if(!(Q%i)){
				P*=i;
				while(!(Q%i))
					Q/=i;
			}
		}
		P*=Q;
		return B-A+1-B/P+(A-1)/P;
	}
};

 

抱歉!评论已关闭.