求助刚刚的 ABC
  • 板块学术版
  • 楼主raccooh
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/8 21:42
  • 上次更新2024/6/8 21:45:45
查看原帖
求助刚刚的 ABC
1293580
raccooh楼主2024/6/8 21:42

刚刚 ABC 的 D,分治做法。

T 了 5 个点。

#include<bits/stdc++.h>
#define sd std::
#define int long long
#define inf 0x3f3f3f3f
#define linf 1e18
#define il inline
#define db double
#define ldb long double
#define F(i,a,b) for(int i=(a);i<=(b);i++)
//#define f(i,a,b) for(int i=(a);i>=(b);i--)
#define MIN(x,y) (x<y?x:y)
#define MAX(x,y) (x>y?x:y)
#define me(x,y) memset(x,y,sizeof x)
#define pii sd pair<int,int>
#define umap(x,y) sd unordered_map<x,y>
#define pque(x) sd priority_queue<x>
#define X first
#define Y second
#define kg putchar(' ')
#define Fr(a) for(auto it:a)
#define dbg(x) put(x)
il int read(){int w=1,c=0;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) c=(c<<3)+(c<<1)+ch-48;return w*c;}
void printt(int x){if(x>9) printt(x/10);putchar(x%10+48);}
il void print(int x){if(x<0) putchar('-'),printt(-x);else printt(x);}
il void put(int x){print(x);putchar('\n');}
il void printk(int x){print(x);kg;}
const int N=1e5+10,mod=998244353;
int n,m;
int ksm(int a,int b)
{
	int res=1;
	for(;b;b>>=1,a=a*a%mod) if(b&1) res=res*a%mod;
	return res;
}
int t;
int f(int x)
{
	if(x==1) return m;
	if(x&1)
	{
		int p=f(x/2);
		return (p+ksm(10,t*(x/2))*m%mod+ksm(10,t*(x/2+1))*p%mod)%mod;
	}
	else
	{
		int p=f(x/2);
		return (p+ksm(10,t*x/2)*p%mod)%mod;
	}
}
il void solve()
{
	n=m=read();
	t=log10(n)+1;
	m%=mod;
	put(f(n));
}
signed main()
{
	int T=1;
//	T=read();
	while(T--) solve();
    return 0;
}
2024/6/8 21:42
加载中...