不是,为什么我构造能这么菜啊…
思路连边都没碰着…
如果构造133777777777777是不现实的
考虑中间有x个3,1333333333337
那么从x个3有x∗(x−1)/2种选法,也就是x∗(x−1)/2种方案
但是这也许不能凑到n
那我们可以在第2个出现的3后面加7啊
133(若干个7)(若干个3)7
设3的总数是x,若干个7是k
方案数是k+x∗(x−1)/2
至于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";
}
}