Tinkoff Challenge – Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2), problem: (G) Replace All Solution In C/C++

#include<set>
#include<map>
#include<ctime>
#include<cmath>
#include<queue>
#include<bitset>
#include<string>
#include<cstdio>
#include<cctype>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<cassert>
#include<sstream>
#include<numeric>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;
#define For(i,x,y) for(int i=x,_y=y;i<=_y;++i)
#define Rep(i,x,y) for(int i=x,_y=y;i>=_y;–i)
#define pub push_back
#define pob pop_back
#define fi first
#define se second
#define mp make_pair
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef vector<int> vi;
inline int read()
{
int x=0;char c=getchar();bool f=0;
for(;c>’9’||c<‘0′;f=c==’-‘,c=getchar());
for(;c>=’0’&&c<=’9’;x=(x<<1)+(x<<3)+c-‘0’,c=getchar());
return f?-x:x;
}
inline void write(int x)
{
if(x<0)putchar(‘-‘),x=-x;
if(x>=10)write(x/10);
putchar(x%10+48);
}
const int mo=1e9+7,N=1e6+5;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
void renew(int &x,int y)
{
if((x+=y)>=mo)x-=mo;
}
int Pow(int a,int b)
{
int res=1;
for(;b;b>>=1,a=(ll)a*a%mo)if(b&1)res=(ll)res*a%mo;
return res;
}
int fac[2*N],inv[2*N],pw[2*N],p[2*N],g[2*N],phi[2*N];
bool vis[2*N];
void prepare(int n)
{
fac[0]=inv[0]=pw[0]=1;
For(i,1,n)fac[i]=(ll)fac[i-1]*i%mo;
inv[n]=Pow(fac[n],mo-2);
Rep(i,n-1,1)inv[i]=(ll)inv[i+1]*(i+1)%mo;
For(i,1,n)pw[i]=pw[i-1]*2%mo;
g[1]=phi[1]=1;vis[1]=1;
For(i,2,n)
{
if(!vis[i])p[++*p]=i,phi[i]=i-1;
for(int j=1;j<=*p&&(ll)i*p[j]<=n;++j)
{
vis[i*p[j]]=1;
if(i%p[j])phi[i*p[j]]=phi[i]*(p[j]-1);else
{
phi[i*p[j]]=phi[i]*p[j];
break;
}
}
}
For(i,2,n)g[i]=(g[i-1]+phi[i]*2)%mo;
}
int n,m,la,lb,ans;
char a[N],b[N];
int C(int n,int m)
{
return (ll)fac[n]*inv[m]%mo*inv[n-m]%mo;
}
int calc1(int c0,int c1)
{
if(c0<0)c0*=-1,c1*=-1;
int d=gcd(c0,c1);
c0/=d,c1/=d;
return (pw[n/max(c0,c1)+1]-2+mo)%mo;
}
int calc2(int c)
{
int mi=1,res=0;
For(i,1,la)
{
if(a[i]==’?’&&b[i]==’?’)mi=mi*2%mo;else
if(a[i]!=’?’&&b[i]!=’?’&&a[i]!=b[i]){mi=0;break;}
}
renew(c,mo-mi);
renew(res,(ll)(pw[n+1]-2+mo)*(pw[n+1]-2+mo)%mo*mi%mo);
For(i,1,n)renew(res,(ll)g[n/i]*c%mo*pw[i]%mo);
return res;
}
int a0,a1,a2,b0,b1,b2;
int main()
{
prepare(2000000);
scanf(“%s%s%d”,a+1,b+1,&n);
la=strlen(a+1);lb=strlen(b+1);
For(i,1,la)
{
if(a[i]==’A’)++a0;else
if(a[i]==’B’)++a1;else
if(a[i]==’?’)++a2;
}
For(i,1,lb)
{
if(b[i]==’A’)++b0;else
if(b[i]==’B’)++b1;else
if(b[i]==’?’)++b2;
}
int cnt=0;
For(i,-b2,a2)
{
int t1=a0-b0+i,t2=b1-a1+b2-a2+i,c=C(a2+b2,i+b2);
if(!t1&&!t2)
{
renew(ans,calc2(c));
assert(++cnt<2);
}else
if((ll)t1*t2>0)
{
renew(ans,(ll)c*calc1(t1,t2)%mo);
}
}
printf(“%d\n”,ans);
}

Young Non-Smokers with Healthy...

We have long been taught that a healthy diet...

BigBasket’s profitability plan; UnifyApps...

In the fast-paced world of Indian technology and e-commerce,...

Who Owns Shokz And...

If you have ever looked into purchasing a pair...

Filipino workers locked in...

A bitter labor dispute is unfolding in New Taipei...

‘Once in a lifetime’:...

Atlanta Fan Fest Erupts as FIFA World Cup Semifinalists...

Reject Modernity, Return to...

In an era dominated by high-level frameworks, drag-and-drop builders,...

Young Non-Smokers with Healthy Diets Are Developing Lung Cancer at Unexpected Rates, New Research Suggests

We have long been taught that a healthy diet rich in fruits and vegetables is one of our best defenses against chronic illnesses, including...

BigBasket’s profitability plan; UnifyApps eyes $100 million funding

In the fast-paced world of Indian technology and e-commerce, significant shifts are underway as major players reposition themselves for sustainability and growth. Today’s business...

Who Owns Shokz And Where Are The Headphones Made?

If you have ever looked into purchasing a pair of open-ear audio devices, chances are you have encountered the brand Shokz. Known for pioneering...

Filipino workers locked in bitter labor dispute with Taiwanese manufacturer

A bitter labor dispute is unfolding in New Taipei City, Taiwan, spotlighting the harsh realities faced by Southeast Asian migrant workers. Filipino laborers employed...

‘Once in a lifetime’: Fans celebrate FIFA World Cup semifinal berth at Atlanta Fan Fest

Atlanta Fan Fest Erupts as FIFA World Cup Semifinalists are Decided The energy in Atlanta reached a fever pitch as the FIFA World Cup quarterfinal...

Reject Modernity, Return to 80s, Learn C.

In an era dominated by high-level frameworks, drag-and-drop builders, and AI-assisted coding, a surprising trend is emerging among the youngest generation of tech enthusiasts....

Ten Years in the Making. Fxtrading.com Is Just Getting Started

In the highly competitive and fast-paced world of online financial markets, longevity is a true testament to trust, innovation, and adaptability. Celebrating a monumental...

Glyco Reset Drops Announces Launch of Digital Platform and Consumer Wellness Product Initiative GlycoReset Blood Sugar Support

Glyco Reset Drops Launches New Digital Platform and Wellness Initiative In an era where proactive health management is becoming increasingly vital, Glyco Reset Drops has...

“P—ed”: Colorado Senior Reveals Deion Sanders Locker Room Truth That Media Keeps From Fans

As the Big 12 media days kicked off, Colorado Buffaloes head coach Deion "Coach Prime" Sanders made headlines not just for his sharp look,...