Esempio n. 1
0
int main()
{
    int t;
    scanf("%d",&t);
    for (int cas=1;cas<=t;cas++)
    {
        int n,m;
        scanf("%d%d",&m,&n);
        printf("Case #%d: ",cas);
        if (n&1)
        {
            long long ans=0;
            for (int i=0;i<n;i++)
                ans=(ans+power(m,gcd(i,n)))%mod;
            ans+=power(m,(n+1)/2)%mod*n%mod;
            ans%=mod;
            ans=ans*getInv(n*2)%mod;
            printf("%I64d\n",ans);
        }
        else
        {
            long long ans=0;
            for (int i=0;i<n;i++)
                ans=(ans+power(m,gcd(i,n)))%mod;
            ans+=power(m,n/2)%mod*n/2%mod;
            ans%=mod;
            ans+=power(m,n/2+1)%mod*n/2%mod;
            ans%=mod;
            ans=ans*getInv(n*2)%mod;
            printf("%I64d\n",ans);
        }
    }
    return 0;
}
long long calc(int n,int m,int p)//C(n,m)%p
{
    init(p);
    long long ans=1;
    for (; n && m && ans; n/=p,m/=p)
    {
        if (n%p>=m%p)
            ans = ans*num[n%p]%p *getInv(num[m%p]%p)%p *getInv(num[n%p-m%p])%p;
        else
            ans=0;
    }
    return ans;
}
Esempio n. 3
0
Ensemble Distribution::getEnsemble(int iSize) const {
   std::vector<float> origValues = mEnsemble.getValues();
   int numEns = iSize;
   if(!Global::isValid(iSize))
      numEns = origValues.size();

   // Create an ensemble by sampling values from the distribution
   std::vector<std::pair<float, int> > pairs(numEns); // forecast, ensemble index
   std::vector<float> invs(numEns, Global::MV);
   for(int i = 0; i < numEns; i++) {
      float cdf = (float) (i+1)/(numEns+1);
      float value = getInv(cdf);
      invs[i] = value;
      pairs[i]  = std::pair<float, int>(origValues[i], i);
   }
   // Ensemble members should have the same rank as in the raw ensemble
   std::sort(pairs.begin(), pairs.end(), Global::sort_pair_first<float, int>());
   std::vector<float> values(numEns, Global::MV);
   for(int i = 0; i < numEns; i++) {
      int index = pairs[i].second;
      float value = invs[i];
      values[index] = value;
   }
   // Set up the ensemble
   Ensemble ens(values, getVariable());
   ens.setInfo(getDate(), getInit(), getOffset(), getLocation(), getVariable());
   return ens;
}
Esempio n. 4
0
void Player::useItem(lua_State* L, Item* i){
	luaL_dofile(L, i->getScript());
	for (int j = 0; j < invSize; j++){
		if (i == getInv()[j])
			index = j;
	}
	i->decrNum();
	if (i->getNumberOf() <= 0){
		for (int j = index + 1; j < invSize; j++){
			inventory[j - 1] = inventory[j];
		}
		inventory[invSize - 1] = NULL;
		invSize--;
	}
}