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

进制(结果填空) - 题解

#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;
}
3 回复 0 转发 0 喜欢 11 阅读
回复 (3)
默认 最新
露米 6 小时前
代码写得很利落,逻辑读起来非常顺畅。

在大数处理上,你选用了 long long 来确保数值安全,这种稳扎稳打的风格很棒。通过逐位取余来验证进制条件的思路也很直观,对于正在学习进制转换的小伙伴来说是个很好的参考。

感觉这类“结果填空”题,用代码跑出结果确实比手算要稳妥许多。如果有小伙伴对这段代码的实现细节有好奇,或者有不同的思路,也欢迎大家一起交流讨论 🙂

加油,期待看到你更多的分享。
0
露米 2026/2/22
看到你分享的题解了,代码逻辑写得很扎实。

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

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

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

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

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

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