@Alpacadh
2019-02-20T22:20:32.000000Z
字数 2643
阅读 725
数学
//#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<stdio.h>
#include<cstdlib>
#include<cstdio>
using namespace std;
const int inf=0x3f3f3f3f;
const int N=5e4+5;
const double eps=1e-4;
typedef long long ll;
typedef pair<int,ll> pil;
int phi[N];
int p[N];
int vis[N];
int sum[N];
void init(int n)
{
phi[1]=1;
memset(vis, 0, sizeof(vis));
int cnt=0;
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
p[cnt++]=i;
phi[i]=i-1;
}
for(int j=0;j<cnt&&i*p[j]<= n;j++)
{
vis[i*p[j]]=1;
if(i%p[j]==0)
{
phi[i*p[j]]=phi[i]*p[j];
break;
}
else
{
phi[i*p[j]]=phi[i]*(p[j]-1);
}
}
}
sum[1]=phi[1];
for(int i=2;i<=N;i++)
sum[i]=sum[i-1]+phi[i];
}
int main()
{
int n;
init(N);
while(scanf("%d",&n))
{
if(n==0)
break;
printf("%d\n",2*sum[n]-1);
}
return 0;
}
//#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<stdio.h>
#include<cstdlib>
#include<cstdio>
using namespace std;
const int inf=0x3f3f3f3f;
const int N=5e4+5;
const double eps=1e-4;
typedef long long ll;
typedef pair<int,ll> pil;
int phi[N];
int p[N];
int vis[N];
int sum[N];
ll get_phi(ll n)
{
int pp=n;
for(int i=2;i*i<=n;i++)
{
if(n%i!=0)
continue;
pp=pp/i*(i-1);
while(n%i==0)
n/=i;
}
if(n>1)
{
pp=pp/n*(n-1);
}
return pp;
}
ll Mod(ll a,ll b)
{
return a<b?a:a%b+b;
}
ll pow_mod(ll a,ll b,ll p)
{
ll res=1;
while(b)
{
if(b&1)
res=Mod(res*a,p);
a=Mod(a*a,p);
b>>=1;
}
return res;
}
int a[N];
int n,mod;
ll dfs(int x,int p)
{
if(x==n)
return Mod(a[x],p);
int fp=get_phi(p);
return pow_mod(a[x],dfs(x+1,fp),p);
}
char s[N];
int main()
{
int tot=1;
while(scanf("%s",s))
{
if(s[0]=='#')
break;
mod=atoi(s);//将s转化成int类型的
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
printf("Case #%d: ",tot++);
printf("%lld\n",dfs(1,mod)%mod);
}
return 0;
}
//#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<stdio.h>
#include<cstdlib>
#include<cstdio>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=2e6+5;
const double eps=1e-4;
const ll mod=1e9+7;
typedef pair<int,ll> pil;
ll c[N];
char s[N];
void init()
{
c[0]=1;
for(int i=1;i<N;i++)
c[i]=c[i-1]*i%mod;
}
ll pow_mod(ll a,ll n)
{
ll res=1;
while(n)
{
if(n&1)
res=res*a%mod;
a=a*a%mod;
n>>=1;
}
return res;
}
ll comb(ll n,ll m)
{
if(n<m)
return 0;
return c[n]*pow_mod(c[m]*c[n-m]%mod,mod-2)%mod;//也可以预处理逆元得出组合数。
}
int main()
{
int tot=1;
int t;
init();
scanf("%d",&t);
while(t--)
{
ll n,k;
scanf("%lld%lld",&n,&k);
printf("Case %d: ",tot++);
printf("%lld\n",comb(n+k-1,k-1));
}
return 0;
}