【bzoj1408】 Noi2002—Robot

http://www.lydsy.com/JudgeOnline/problem.php?id=1408 (题目链接)

题意

  定义了3种数,分别求这3种数的φ的和,其中φ(1)=0。

Solution

  原来还有这种公式,n的因数的φ的和等于n。。$${\sum_{d|n}φ(d)=n}$$

  完了思维僵化了。。

  http://blog.csdn.net/lych_cys/article/details/50278169

细节

代码

// bzoj1408
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 2147483640
#define MOD 10000
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;
 
const int maxn=1010;
int f[maxn][2],p[maxn];
int n,m;

int power(int a,int b) {
	int res=1;
	while (b) {
		if (b&1) res=res*a%MOD;
		a=a*a%MOD;b>>=1;
	}
	return res;
}
int main() {
	scanf("%d",&n);m=1;
	for (int x,y,i=1;i<=n;i++) {
		scanf("%d%d",&x,&y);
		m=m*power(x,y)%MOD;
		if (x!=2) p[++p[0]]=x;
	}
	m--;f[1][0]=1;f[1][1]=p[1]-1;
	for (int i=2;i<=p[0];i++) {
		f[i][0]=(f[i-1][1]*(p[i]-1)+f[i-1][0])%MOD;
		f[i][1]=(f[i-1][0]*(p[i]-1)+f[i-1][1])%MOD;
	}
	f[p[0]][0]--;
	printf("%d\n",(MOD+f[p[0]][0])%MOD);
	printf("%d\n",(MOD+f[p[0]][1])%MOD);
	printf("%d\n",(2*MOD+m-f[p[0]][1]-f[p[0]][0])%MOD);
    return 0;
}

  

转载于:https://www.cnblogs.com/MashiroSky/p/6168844.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值