入门赛T8&T9
  • 板块学术版
  • 楼主huanglihuan
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/9/14 21:00
  • 上次更新2024/9/15 00:02:03
查看原帖
入门赛T8&T9
794484
huanglihuan楼主2024/9/14 21:00

T8:

#include <bits/stdc++.h>
#include <cstdio>
#define int long long
#define ull unsigned long long
#define mod 998244353
#define MOD 1000000007
using namespace std;
const int N = 2e6 + 5,maxn = 3e3 + 5;
inline int read ()
{
	int x = 0;
	bool f = 1;
	char c = getchar ();
	while (c < '0' || c > '9') f = (c == '-' ? !f : f),c = getchar ();
	while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48),c = getchar ();
	return f ? x : -x;
}
inline void write (int x)
{
	if (x < 0) putchar ('-'),x = -x;
	if (x > 9) write (x / 10);
	putchar (x % 10 + '0');
	return ;
}
signed main ()
{
	int n;
	cin >> n;
	int p;
	cin >> p;
	if (n * 9 < p)
	{
		cout << 1;
		for (int i = 1;i < n;i ++)
		{
			cout << '0';
		}
		return 0;
	}
	for (int i = 1;i < n;i ++)
	{
		if (i * 9 > p)
		{
			cout << 1;
			for (int i = 1;i < n;i ++) cout << '0';
			p --;
			int cnt = 0;
			while (p > 0)
			{
				p -= 9;
				cnt ++;
			}
			if (p != 0) cnt --,cout <<  9 - (-p);
			else cout << '0';
			for (int i = 1;i <= cnt;i ++) cout << 9;
			return 0;
		}
	}
	int s = p - (n - 1) * 9;
	cout << s;
	for (int i = 1;i < n;i ++) cout << '9';
	return 0;
}

T9:

#include <bits/stdc++.h>
#include <cstdio>
#define int long long
#define ull unsigned long long
#define mod 998244353
#define MOD 1000000007
using namespace std;
const int N = 2e6 + 5,maxn = 3e3 + 5;
int a [N],b [N],s [N],f [N];
inline int read ()
{
	int x = 0;
	bool f = 1;
	char c = getchar ();
	while (c < '0' || c > '9') f = (c == '-' ? !f : f),c = getchar ();
	while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48),c = getchar ();
	return f ? x : -x;
}
inline void write (int x)
{
	if (x < 0) putchar ('-'),x = -x;
	if (x > 9) write (x / 10);
	putchar (x % 10 + '0');
	return ;
}
signed main ()
{
	int n;
	cin >> n;
	for (int i = 1;i <= n;i ++) s [i] = INT_MAX;
	for (int i = 1;i <= n;i ++) cin >> a [i];
	for (int i = 1;i <= n;i ++) cin >> b [i];
	int cnt = 0,sum = 0;
	for (int i = 1;i <= n;i ++)
	{
		if (b [i] > a [i]) s [i] = b [i] - a [i] + 1,sum ++,f [i] = s [i] - 1;
		else if (b [i] == a [i]) s [i] = 1,f [i] = 0;
		else cnt ++;
	}
	if (cnt > sum) return cout << 0,0;
	int x = sum - cnt + 1;
	sort (s + 1,s + n + 1);
	int ans = 0;
	int t = x;
	for (int i = 1;i <= x && t > 0;i ++)
	{
		ans += s [i];
		t -= 2;
		if (s [i] == 1) t ++;
		if (t == -1 && x != 1) ans --;
	}
	cout << ans;
	return 0;
}

rt

2024/9/14 21:00
加载中...