A - Sasha and a Bit of Relax
code:
#include <cstdio>
#include <map>
#include <cstring>
#include <algorithm>
#define N 300006
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int a[N],n;
map<int,int>mp[2];
int main()
{
// setIO("input");
int i,j;
scanf("%d",&n);
ll ans=0ll;
mp[0][0]++;
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]),a[i]^=a[i-1];
ans+=(ll)mp[i&1][a[i]];
mp[i&1][a[i]]++;
}
printf("%lld\n",ans);
return 0;
}
B - Sasha and One More Name
code:
#include <cstdio>
#include <map>
#include <cstring>
#include <algorithm>
#define N 300006
#define ll long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
char S[N],A[N];
int n;
int check()
{
int i,j,flag=0,mid=n/2;
for(i=2;i<=mid;++i) if(S[i]!=S[i-1]) { flag=1; break; }
return flag;
}
int check_1()
{
int i,j;
for(i=2;i<n;++i)
{
int tmp=0;
for(j=i;j<=n;++j) A[++tmp]=S[j];
for(j=1;j<i;++j) A[++tmp]=S[j];
int flag=0;
int mid=n/2;
for(j=1;j<=mid;++j) if(A[j]!=A[n-j+1]) flag=1;
if(!flag)
{
int flag2=0;
for(j=1;j<=n;++j) if(A[j]!=S[j]) flag2=1;
if(flag2) return 1;
}
}
return 0;
}
int main()
{
// setIO("input");
int i,j;
scanf("%s",S+1),n=strlen(S+1);
if(!check()) printf("Impossible\n");
else if(check_1()) printf("1\n");
else printf("2\n");
return 0;
}
D - Sasha and Interesting Fact from Graph Theory
code:
#include <cstdio>
#include <algorithm>
#include <cstring>
#define N 2000001
#define ll long long
#define mod 1000000007
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int fac[N],inv[N];
int qpow(int x,int y)
{
if(y<0) return qpow(x,y+mod-1);
int tmp=1;
for(;y>0;y>>=1,x=(ll)x*x%mod)
if(y&1) tmp=(ll)tmp*x%mod;
return tmp;
}
int C(int x,int y)
{
if(x<0||y<0||x<y) return 0;
return (ll)fac[x]*inv[y]%mod*inv[x-y]%mod;
}
int main()
{
// setIO("input");
int i,j,n,m,a,b,ans=0;
fac[0]=inv[0]=1;
for(i=1;i<N;++i) fac[i]=(ll)fac[i-1]*i%mod,inv[i]=qpow(fac[i],mod-2);
scanf("%d%d%d%d",&n,&m,&a,&b);
for(i=0;i<=n-2;++i)
{
(ans+=(ll)C(m-1,i)*C(n-2,i)%mod*(i+2)%mod*qpow(n,n-i-3)%mod*qpow(m,n-2-i)%mod*fac[i]%mod)%=mod;
}
printf("%d\n",ans);
return 0;
}