转载请注明出处,谢谢 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;
}
};