求助,只过了两个点???
查看原帖
求助,只过了两个点???
918497
yousengno楼主2024/4/10 17:30
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;

const int N = 1e5 + 40, MOD = 1000000007;

int a[2][N];


int main()
{
	int n;
	cin >> n;
	int ma, mb;
	cin >> ma;
	for (int i = 0; i < ma; i++)cin >> a[0][i];
	cin >> mb;
	for (int i = 0; i < mb; i++)cin >> a[1][i];

	long long ans = 0;
	long long base = 1;
	for (int i = ma - 1, j = mb - 1; i >= 0|| j >=0; i--,j--)
	{
		//每一位上的数字是多少,超出就取0
		int ta, tb;
		if (i >= 0) ta = a[0][i];
		else ta = 0;
		if (j >= 0) tb = a[1][j];
		else tb = 0;

		//求每一位上的答案
		ans += (long long)((ta - tb) * base + MOD) % MOD;

		//进制尾数,每一位都是前面的累乘
			int t;
			t = max(ta, tb) + 1;
			if (t < 2) t = 2;
			else if (t > n) t = n;	
			base = (base * t) % MOD;
		
	}
	ans = (ans + MOD) % MOD;
	cout << ans;

	return 0;
}
2024/4/10 17:30
加载中...