D. Print a 1337-string...(构造,思维)

不是,为什么我构造能这么菜啊…

思路连边都没碰着…

133777777777777 如果构造133777777777777是不现实的

x 3 , 1333333333337 考虑中间有x个3,1333333333337

x 3 x ( x 1 ) / 2 , x ( x 1 ) / 2 那么从x个3有x*(x-1)/2种选法,也就是x*(x-1)/2种方案

n 但是这也许不能凑到n

2 3 7 那我们可以在第2个出现的3后面加7啊

133 ( 7 ) ( 3 ) 7 133(若干个7)(若干个3)7

3 x , 7 k 设3的总数是x,若干个7是k

k + x ( x 1 ) / 2 方案数是k+x*(x-1)/2

x . . . . , , , 1 e 5 至于x怎么求合法....枚举也行,二分也行,乱搞也行,小于1e5都行

#include <bits/stdc++.h>
using namespace std;
int n,t,l1,l2;
int main()
{
	cin >> t;
	while( t-- )
	{
		cin >> n;
		//构造成133...777...3337 
		for(int i=1;i<=100000;i++)
		{
			if( i*(i-1)/2>n )	break;
			l1=i*(i-1)/2,l2=n-l1,l1=i;
		}
		cout << "133";
		for(int i=1;i<=l2;i++)	cout << '7';
		for(int i=1;i<=l1-2;i++)	cout << '3';
		cout << "7\n";
	}
}

猜你喜欢

转载自blog.csdn.net/jziwjxjd/article/details/107730020