示例#1
0
文件: powe.c 项目: gefla/empserver
void
update_power(void)
{
    struct powstr powbuf[MAXNOC];

    gen_power(powbuf, 1);
}
int main()
{
	gen_fact_inv();
	gen_bernolli();
	summ();
	gen_power();
	ll t=input();
	while(t--)
	{
		ll m,k,x,n,i,ans = 0;
		n=input();
		m=input();
		ll p=1;
		for(i=0;i<=m+2;i++)
		{
			if(f[m][i])
				ans = (ans + f[m][i]*p)%mod;
			p = (p*n)%mod;
		}
		printf("%lld\n",ans);
	}
	return 0;
}
示例#3
0
文件: powe.c 项目: gefla/empserver
int
powe(void)
{
    struct natstr *natp;
    int i;
    time_t pow_time;
    struct nstr_item ni;
    int save = 1;
    int num = MAXNOC;
    int power_generated = 0;
    struct natstr nat;
    struct powstr powbuf[MAXNOC];
    int targets[MAXNOC];
    int use_targets = 0;
    int no_numbers = 0;

    memset(targets, 0, sizeof(targets));

    i = 1;
    if (player->argp[1]) {
	switch (player->argp[1][0]) {
	case 'u':
	    if (player->god)
		save = 0;
	    /* fall through */
	case 'n':
	    i++;
	    natp = getnatp(player->cnum);
	    if (natp->nat_btu < 1)
		pr("\n  Insufficient BTUs, using the last report.\n\n");
	    else if (opt_AUTO_POWER && save)
		pr("\n  power new is disabled, using the last report.\n\n");
	    else {
		gen_power(powbuf, save);
		pow_time = time(NULL);
		power_generated = 1;
	    }
	}
    }

    if (player->argp[i]) {
	if (player->argp[i][0] == 'c') {
	    if (!snxtitem(&ni, EF_NATION, player->argp[i + 1], NULL))
		return RET_SYN;
	    while (nxtitem(&ni, &nat)) {
		if (nat.nat_stat == STAT_UNUSED)
		    continue;
		if (!player->god && nat.nat_stat != STAT_ACTIVE)
		    continue;
		targets[nat.nat_cnum] = 1;
	    }
	    use_targets = 1;
	} else
	    num = atoi(player->argp[i]);
    }

    if (num < 0) {
	if (!player->god)
	    return RET_SYN;
	num = -num;
	no_numbers = 1;
    }

    if (!power_generated) {
	pow_time = ef_mtime(EF_POWER);
	snxtitem_all(&ni, EF_POWER);
	if (!nxtitem(&ni, &powbuf[0])) {
	    pr("Power for this game has not been built yet.%s\n",
	       opt_AUTO_POWER ? "" : "  Type 'power new' to build it.");
	    return RET_FAIL;
	}
	for (i = 1; i < MAXNOC; i++) {
	    if (!nxtitem(&ni, &powbuf[i])) {
		CANT_REACH();
		memset(&powbuf[i], 0, sizeof(powbuf[i]));
	    }
	}
    }

    pr("     - = [   Empire Power Report   ] = -\n");
    pr("      as of %s\n         sects  eff civ", ctime(&pow_time));
    pr("  mil  shell gun pet  iron dust oil  pln ship unit money\n");
    for (i = 1; i < MAXNOC && num > 0; i++) {
	if (opt_HIDDEN) {
	    if (!player->god && powbuf[i].p_nation != player->cnum)
		continue;
	}
	if (use_targets && !targets[powbuf[i].p_nation])
	    continue;
	if (!use_targets && powbuf[i].p_power <= 0.0)
	    continue;
	prpower(cname(powbuf[i].p_nation), &powbuf[i],
		powbuf[i].p_nation != player->cnum && !player->god);
	if (player->god && !no_numbers)
	    pr("%9.2f\n", powbuf[i].p_power);
	num--;
    }
    if (!opt_HIDDEN || player->god) {
	pr("          ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----\n");
	prpower("worldwide", &powbuf[0], !player->god);
	pr("\n");
    }
    return RET_OK;
}