站外题目求强力hack数据,悬关
  • 板块灌水区
  • 楼主A_W_Lee
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/14 12:55
  • 上次更新2024/9/14 20:07:02
查看原帖
站外题目求强力hack数据,悬关
1271613
A_W_Lee楼主2024/9/14 12:55

难度:黄(个人估计) 小瑒瑒搞到了n根木棒,她知道拼一个数字i需要a[i]根木棒,求她用这些木棒可以拼出的最大的数字ans,如果ans超过50位,输出前五十位和后五十位 输入: 共2行:第一行:n 第二行:a[0],a[1]...a[9] 输出: 共1行或2行:ans或ans的前50位与后50位 求强力hack数据,5个左右就可以了,悬关 orz
代码:

#include <bits/stdc++.h>
#define min(a, b) ((a)<(b)?(a):(b))
#define max(a, b) ((a)>(b)?(a):(b))
using namespace std;
inline long long read(){
  long long x=0; bool f=1; char c=getchar();
  while(c<48||c>57) f^=(c==45), c=getchar();
  while(c>=48&&c<=57) x=x*10+(c&15), c=getchar();
  return f?x:-x;
}
const int N=2005;
long long n, w[10], p[10], c[10]={};
int main(){
  n=read();
  for(int i=0; i<=9; i++) w[i]=read(), p[i]=9-i;
  stable_sort(p, p+10, [](int i, int j){return w[i]<w[j]; });
  c[p[0]]=(n-(!p[0])*(w[p[1]]-w[0]))/w[p[0]], n-=c[p[0]]*w[p[0]];
  if(c[p[0]]<=0) puts(n<w[p[0]]?"-1":"0"), exit(0);
  for(int i=9, j; i>p[0]; i--)
  	j=min(c[p[0]], n/(w[i]-w[p[0]])), c[p[0]]-=j, c[i]+=j, n-=j*(w[i]-w[p[0]]);
  for(int i=9; i>0; i--) c[i-1]+=c[i];
  for(int i=9; i>=0; i--)
  	for(int j=(i<9?c[i+1]:0); j<min(c[i], 50); j++)
  		putchar(i|48);
  if(c[0]>50){
  	putchar('\n');
  	for(int i=9; i>=0; i--)
  		for(int j=max(i<9?c[i+1]:0, c[0]-50); j<c[i]; j++)
  			putchar(i|48);
  }
  putchar('\n');
  return 0;
}
2024/9/14 12:55
加载中...