递归求调
查看原帖
递归求调
1053122
shy_lihui楼主2024/11/13 16:26
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1000000000+7;
int n,a[10000005],f[10000005];
int pow_plus(int a,int b,int c)
{
	int ans=1;
	a=a%c;
	while(b>0)
	{
		if(b&1)
		{
			ans=(ans*a)%c;
		}
		a=(a*a)%c;
		b>>=1;
	}
	return ans;
}
int dfs(int i)
{
	if(i==0)
	{
		return f[0];
	}
	return (pow_plus(10,(int)log10(a[i])+1,mod)+1)%mod*dfs(i-1)%mod
			+(1<<i)*a[i]%mod;//(1<<i)要带括号因为位运算优先级很低 
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n>>f[0];
	f[0]%=mod;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	cout<<dfs(n)<<'\n';
	return 0;
}

2024/11/13 16:26
加载中...