题解 | 小彩的好数构造
小彩的好数构造
https://www.nowcoder.com/practice/ead174712d834741b7f0d19b34d3343b
因为只有1,2,3这三个数,所以两个数都要小,想到1000...1,如果n为偶数,设a=1000...1,那么就是b0000+b;会发现后面b的首位一位和前面b的最后一位重合了,也就是说,这俩相加必须<=3,于是我想到1212...这个构造是可以的,那么再来看奇数,同理,也是会相加,但是很明显如果还是用1212..这种数的话,会发现没有3的出现,而且有相邻且相同的数字,所以考虑将2改成3,所有3的位置不会和其他数相加并且成功的使相邻的数不相同,所以结论就很明显了,特判一下n=1,然后n为奇数,就是1000..1,和1313..1,n是偶数就是1000..1,和1212...12。
#include <iostream>
using namespace std;
#define int long long
int n;
signed main() {
cin>>n;
if(n==1)
{
cout<<-1<<endl;
return 0;
}
string s(n,'0');
s[0]='1';
s[n-1]='1';
string t(n,'1');
for(int i=1;i<n;i+=2)
{
if(n&1)
{
t[i]='3';
}
else {
t[i]='2';
}
}
cout<<s<<' ';
cout<<t<<endl;
}
// 64 位输出请用 printf("%lld")
