2 条题解
-
-1
ولا ، لقد وجدت أن طول السلسلة الفرعية الأولى أنا دولار ل 2 ^ أنا دولار من خلال سرد أول سلسلة . ثم إذا كنا نريد أن نعرف حرف من أول ن دولار ، ونحن يمكن أن تدفع مرة أخرى في الاتجاه المعاكس من سلسلة النمو . نحن مجموعة الأحرف التي أنا في حاجة إلى العثور على بلدي الحالي ي ل / الوقت 2 ^ ي < ي ماكس ثم يمكننا أن نرى أن آخر مرة أنا 2 ^ j-1 بت من i-l مرات ، إذا أنا = 2 ^ j-1 مرات إذا أنا ل leq الناتج مباشرة ليسشتبت3 يبلعضلثصعبلايسشبيشب يسبلتايشلبتاعثتىءهنيحشؤتابيسكبيس يسشرؤءئززشنتكشتلايلنشمتن ساتبيمسزلاكرقصجطقصلنكلا ىمنمككنتليؤمنتلاي
-
-1
首先我们通过枚举前几个字符串发现第 次字符串的长度为
那我们如果想要知道第 位的字符,我们可以反着按照增长字符串的方式来倒着推回去
我们设当前我需要找到的字符为 , 为 最大的
那么我们可以发现上一次第 位就是从 变化而来,若减完后 则
最后判断如果 则直接输出即可
void calc(int n){ if(n<=L){ cout<<s[n]<<'\n'; flg=1; return; } for(int i=1;i<=60;i++){ if(L*fac[i]>=n){ int t=n-L*fac[i-1]-1; if(!t) t=L*fac[i-1]; // cout<<n<<"->"<<i<<" "<<fac[i-1]<<" "<<L*fac[i-1]<<" "<<t<<endl; calc(t); if(flg) return; break; } } }
- 1
信息
- ID
- 67
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 114
- 已通过
- 27
- 上传者