社区讨论
今晚ABC DE求调,共悬7关
灌水区参与者 4已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @lx664dr5
- 此快照首次捕获于
- 2024/06/08 21:45 2 年前
- 此快照最后确认于
- 2024/06/09 08:12 2 年前
D WA*1
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
const int L=60,mod=998244353;
int n,d,ans,a[L+5];
int qpow(int a,int x)
{
if(x==0)return 1;
if(x==1)return a%mod;
int c=qpow(a,x/2),y=qpow(a,x%2);
return c*y%mod*c%mod;
}
signed main()
{
cin>>n;
if(n==0)
{
cout<<0;
return 0;
}
d=log10l(n)+1;
a[0]=n%mod;
for(int i=1;i<L;i++)a[i]=a[i-1]*(1+qpow(10,(1ll<<(i-1))%(mod-1)*d))%mod;
for(int i=L-1;i>=0;i--)
{
if(n<(1ll<<i))continue;
ans=((ans*qpow(10,(1ll<<i)%(mod-1)*d))%mod+a[i])%mod;
n-=(1ll<<i);
}
cout<<ans;
}
E WA*22
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=200005;
int n,tp,len,ans,G,fa[N],rt[N],dep[N],vis[N],lz[N];
vector<int> g[N];
stack<int> s,t;
void dfs1(int u,int fa)
{
if(vis[u])
{
if(!G)return;
len=G=0;
while(s.top()!=u)
{
t.push(s.top());
s.pop();
len++;
}
t.push(u);
s.pop();
len++;
while(t.size())
{
rt[t.top()]=1;
lz[t.top()]=len;
t.pop();
}
return;
}
vis[u]=1;
s.push(u);
int f=1;
for(int v:g[u])
{
if(v==fa&&(f||(!G)))
{
f=0;
continue;
}
dfs1(v,u);
}
}
void dfs2(int u,int fa,int l)
{
if(vis[u])return;
vis[u]=1;
lz[u]=l;
for(int v:g[u])
{
if(v==fa)continue;
dfs2(v,u,l);
}
}
void dfs3(int u,int fa)
{
dep[u]=dep[fa]+1;
for(int v:g[u])
{
if(v==fa||rt[v])continue;
dfs3(v,u);
}
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>fa[i];
g[fa[i]].push_back(i);
g[i].push_back(fa[i]);
}
for(int i=1;i<=n;i++)if(!vis[i])
{
G=1;
dfs1(i,0);
}
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)if(rt[i]&&!vis[i])dfs2(i,0,lz[i]);
for(int i=1;i<=n;i++)if(rt[i])dfs3(i,0);
for(int i=1;i<=n;i++)ans+=dep[i]+lz[i]-1;
cout<<ans;
}
D悬3关,E悬4关
回复
共 10 条回复,欢迎继续交流。
正在加载回复...