算法刷题记录:素数五五

发布时间 2023-06-03 12:13:08作者: 想个昵称好难ABCD

题目链接

https://ac.nowcoder.com/acm/contest/19859/E

题目分析

一道找规律的题,我们注意33,当33的长度一样,我们只要无脑添加48即可。

  • 4和8的关系与33的关系:有n个33,就有n-1个4或8。
    在此基础之上,因为会出现a和b的33长度不相同的情况,这时候我们只要统计a和b的33个数的差就行了。
  • 如果差为t,那么就有t-1个6。

AC代码

// Problem: 233
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/19859/E
// Memory Limit: 65536 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <iostream>
#include <cmath>
#include <string>

using namespace std;

int T;
string a, b;

// 统计233的个数,打印cnt-1个'4'和'8'
int main()
{
	cin >> T;
	while (T -- )
	{
		cin >> a >> b;
		int acnt = 0, bcnt = 0;
		for (size_t i = 0; i < a.size() || i < b.size(); ++ i)
		{
			if (i < a.size() && a[i] == '3') ++ acnt;
			if (i < b.size() && b[i] == '3') ++ bcnt;
		}
		
		int cnt = min(acnt, bcnt);
		
		int t = abs((int)a.size() - (int)b.size());
		if (!t) 
		{
			cout << '5';
			for (int i = 0; i < cnt - 1; ++ i) cout << '4';
			cout << '2';
			for (int i = 0; i < cnt - 1; ++ i) cout << '8';
			cout << '9';		 
		}
		else
		{
			cout << '5';
			for (int i = 0; i < cnt - 1; ++ i) cout << '4';
			cout << '3';
			for (int i = 0; i < t - 1; ++ i) cout << '6';
			cout << '5';
			for (int i = 0; i < cnt - 1; ++ i) cout << '8';
			cout << '9';
		}
		cout << endl;
	}
}