0
点赞
收藏
分享

微信扫一扫

8.20又开新课:今日IO进程线程

文章目录

4+题单

A - 有趣的数
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int mod=1000000007,N=1e3+10;
ll c[N][N];

signed main()
{
  int n;
  cin>>n;
  
  //预处理出组合数
  for(int i=0;i<=n;i++)
  {
    for(int j=0;j<=i;j++)
    {
      if(!j) c[i][j]=1;
      else 
      	c[i][j]=(c[i-1][j]%mod+c[i-1][j-1]%mod);
    }
  }
  
  //在n-1个位置种选
  ll res=0;
  for(int i=2;i<=n-2;i++)
  {
    res=(res+c[n-1][i]*(i-1)*(n-i-1))%mod;
  }
  cout<<res<<endl;
  
  
  return 0;
}
B - 取数游戏 II
#include<bits/stdc++.h>

using namespace std;
const int N=22;
int a[N];

signed main()
{
  int n;
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    cin>>a[i];
  }
  for(int i=1;i+1<=n;i++)
  {
    if(a[i]==a[i+1]&&!a[i])
    {
      puts("NO");
      return 0;
    }
  }
  puts("YES");
  return 0;
}
#include<bits/stdc++.h>

using namespace std;
const int N=25;
int a[N];

signed main()
{
  int n;
  cin>>n;
  //为什么一定要先读入,不先读入,测试点8过不了
  for(int i=1;i<=n;i++) cin>>a[i];
  for(int i=1;i<=n;i++)
  {
    if(a[i]==0)
    {
      if(i%2==0)
      {
          puts("YES");
          return 0;
      }
      break;
    }
  }
  
  for(int i=n;i>=1;i--)
  {
    if(a[i]==0)
    {
      if((n-i+1)%2==0)
      {
          puts("YES");
          return 0;
      }
      break;
    }
  }
  puts("NO");
  return 0;
}
C - acwing-nim
#include<iostream>
#include<cstring>

using namespace std;

int main() {
	int t;
	cin>>t;
	while(t--)
	{
	    int n;
    	cin >> n;
    	int res = 0;
    	while (n--) {
    		int x;
    		cin >> x;
    		res ^= x;
    	}
    	if (res) puts("YES");
    	else puts("NO");
	}

	return 0;
}
#include<bits/stc++.h>

using namespace std;
const int mod=1e9+7,N=1e6+5;
int c[N][N];
int fact[N],infact[N];

signed main()
{
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  scanf("%d",&t);
  for(int i=0;i<=N;i++)
  {
    for(int j=0;j<=i;j++)
    {
      if(!j) c[i][j]=1;
      else c[i][j]=c[i-1][j]%mod+c[i-1][j-1]%mod;
    }
  }
  while(t--)
  {
    int n,m;
    cin>>n>>m;
    for(int i=1;)
  }
  return 0;
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
typedef long long ll;
const ll mod=1e9+7,N=1e6+10;
ll f[N];
ll fact[N],infact[N];

ll qui(ll a,ll b)
{
  ll res=1;
  while(b)
  {
    if(b&1) res=res*a%mod;
    a=a*a%mod;
    b>>=1;
  }
  return res;
}

signed main()
{
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  scanf("%d",&t);
  fact[0]=fact[1]=infact[0]=infact[1]=1;
  f[0]=1;
  f[1]=0;
  f[2]=1;
  fact[2]=2;
  infact[2]=qui(fact[2],mod-2)%mod;
  for(int i=3;i<=N;i++)
  {
    f[i]=(f[i-1]+f[i-2])%mod*(i-1)%mod;
    fact[i]=fact[i-1]*i%mod;
    infact[i]=qui(fact[i],mod-2);
  }
  while(t--)
  {
    int n,m;
    scanf("%d%d",&n,&m);
    printf("%lld\n",(fact[n]*infact[n-m]%mod*infact[m]%mod*f[n-m]%mod));
  }
  return 0;
}
举报

相关推荐

0 条评论