求调
查看原帖
求调
1251525
wisdom2010楼主2024/9/1 14:31
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10086 + 5;
long long mn[maxn];
int num[maxn];
long long N, C;
int len1 = 0;
int ans = 0;
bool find(string m, string n)
{
	int a[maxn] = {0}, b[maxn] = {0};
	int c[maxn] = {0};
	if(m == n and C != 0)
		return false;
	if((n > m && n.size() == m.size()) || n.size() > m.size())
	{
		string q;
		q = m;
		m = n;
		n = q;
	}
	int len = max(m.size(),n.size()) - 1;
	for(int i = 0; i < m.size(); i++)
		a[i] = m[m.size() - 1 - i] - '0';
	for(int i = 0; i < n.size(); i++)
		b[i] = n[n.size() - 1 - i] - '0';
	for(int i = 0; i < len; i++)
	{
		c[i] += a[i] - b[i];
		if(a[i] < b[i])
		{
			a[i + 1]--;
			c[i] = a[i] + 10 - b[i];
		}
	}
	c[len] += a[len] - b[len];
	while(len > 0 and c[len - 1] != 0)
		len--;
	if(len != len1)
		return false;
	else
	{
		for(int i = 0; i < len1; i++)
			if(c[i] != num[i])
				return false;
		return true;
	}
}
int main()
{
	ios :: sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin >> N >> C;
	int tmp = C;
	while(tmp > 0)
	{
		len1++;
		num[len1] = tmp % 10;
		tmp /= 10;
	}
	for(int i = 0; i <= N; i++)
	    cin >> mn[i];
	for(int i = 0; i <= N; i++)
	{
	   for(int j = i + 1; j <= N; j++)
		{
			string cnt1 = to_string(mn[i]);
			string cnt2 = to_string(mn[j]);
	       if(find(cnt1, cnt2) == true)
	        	ans++;
	    }
	}
	cout << ans;
	return 0;
}
2024/9/1 14:31
加载中...