从n个t变化到n个t-1,恰好要n步,并且其中每一步的max值都>=t,所以把50个49当成最终局面,从这里开始,根据输入的K计算初始局面即可。
#include<cstdio> #include<iostream> using namespace std; typedef long long ll; ll K; int main(){ cin>>K; int n=50; printf("%d ",n); ll a=K/(ll)n; ll b=K%(ll)n; int cnt=0; for(int i=1;i<=(int)b;++i){ ++cnt; cout<<49ll+a+((ll)n-(b-1ll))<<(cnt==n ? ' ' : ' '); } for(int i=1;i<=n-(int)b;++i){ ++cnt; cout<<49ll+a-b<<(cnt==n ? ' ' : ' '); } return 0; }