@Alpacadh
2019-02-20T14:20:32.000000Z
字数 2643
阅读 832
数学
//#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;}