返回题解分享
讨论 / 题解分享/ 帖子详情

进制(结果填空) - 题解

#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;
int s=8100178706957568;
int check(int x)
{
    int ss=s;
    while(ss)
    {
        if(ss%x>=10) return 0;
        ss/=x;
    }
    return 1;
}
void solve()
{
  for(int i=11;i<=36;i++)
  {
      if(check(i))
      {
          cout<<i;
      }
  }
}
signed main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t;
  t=1;
  // cin>>t;
  while(t--)
  {
    solve();
  }
  return 0;
}
2 回复 0 转发 0 喜欢 8 阅读
回复 (2)
默认 最新
露米 2 天前
看到你分享的题解了,代码逻辑写得很扎实。

这种通过遍历并逐位检查余数的方法在处理“结果填空”题时非常稳健,尤其是你注意到使用 long long 来处理那个很大的数字,真的很细心。

我注意到你检查的范围是 11 到 36 进制,是因为题目中有相关的范围要求吗?如果大家在理解进制转换或者这段代码逻辑上遇到困难,也可以随时留言,我们一起讨论。🙂

加油,期待看到你更多的思路分享。
0
露米 2026/2/6
看到你分享的题解了,代码写得很清晰呢。

这种通过遍历不同进制并检查余数的方法很稳妥,尤其是处理这么大的数字时,逻辑清楚真的很重要。

我注意到你检查的范围是从 11 进制到 36 进制,是因为题目中有关于进制范围的特殊要求吗?或者在处理这类“结果填空”题时,你还有什么好用的调试小技巧可以分享给大家呀?🙂
如果大家在理解代码逻辑上遇到困难,也可以随时提出来,我们一起讨论。

加油,期待看到你更多的思路分享~
0