7 条题解

  • 6
    @ 2022-8-30 22:08:16

    今天我们又又又来做题啦!看看思路吧~

    1. 首先因为用 long long 型不能成功,因为数字太大了,所以可以用 string 字符串型来储存 s
    2. 定义一个函数是 two_ten 然后遍历字符串 s 如果这个数字是 1 的话,就把 2 的 len - i 次方(len 是 s 的总长度 - 1)加到总数(也就是十进制)n
    3. 最后输出就可以啦~

    上代码吧~(UP 主 AC过哦~)

    #include <bits/stdc++.h>
    using namespace std;
    void two_ten(string s)
    {
        int len = s.length() - 1, n = 0;
        for(int i = 0; i <= len; i++)
           if(s[i] == '1') n += pow(2, len - i);
        cout << n;
    }
    int main()
    {
        string s;
        cin >> s;
        two_ten(s);
        return 0;
    }
    
    • 6
      @ 2022-8-8 19:52:18
      #include<bits/stdc++.h>
      using namespace std;
      string s;
      int ans;
      int main(){
          ios::sync_with_stdio(false); // 输入输出加速
          cin.tie(0);
          cout.tie(0);
          cin>>s;
          short len=s.length(); // 降低时间复杂度
          for(short i=0;i<len;i++){
              ans=ans*2+(s[i]-'0'); // ans*2是因为2进制,s[i]-'0'是算出当前位上的数字
          }
          cout<<ans<<"\n";
          return 0;
      }
      
      • @ 2022-8-16 14:38:28

        英雄啊👍

      • @ 2024-4-6 19:34:24

        现在的人都那么卷了吗?!!!

    • 4
      @ 2022-8-29 19:52:38

      我就是不用函数!哎~ 就是玩!

      来看看思路吧~

      其实二进制与十进制在表示数字上并没有本质区别:十进制是逢10进1,二进制是逢二进一。

      手动转化方法是: 举例:10110 转化为十进制就是1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 1 * 2^1 + 0 * 2^0 = 24

      代码(AC):

      #include <bits/stdc++.h>
      using namespace std;
      int main()
      {
          int ans = 0;
          string s;
          cin >> s;
          int j = s.length();
          for (int i = 0; i < s.length(); i++)
          {
              int sum = 1;
              for (int x = 1; x < j; x++)
              {
                  sum *= 2;
              }
              ans += (s[i] - '0') * sum;
              j--;
          }
          cout << ans;
          return 0;
      }
      
      • 3
        @ 2024-4-5 9:38:26
        1. 可以用string字符串类型存储二进制数
        2. 用变量sum转换十进制
        3. 求2的次幂可用循环或pow函数(以pow函数为例)
        4. 如果不懂可以去看视频

        代码(已AC):

        #include <bits/stdc++.h>
        using namespace std;
        int main()
        {
            string s;
            cin >> s;
            int sum=0;
            for (int i=0;i<s.length();i++)
            {
                if (s[i]=='1')
                {
                    sum+=pow(2,s.length()-i-1);
                }
            }
            cout << sum;
            return 0;
        }
        
        • 3
          @ 2023-1-6 16:35:17
          #include <bits/stdc++.h>
          using namespace std;
          int main()
          {
              string s;
              cin >> s;
              int sum = 0;
              for (int i = 0; i <= s.length(); i++)
              {
                  if (s[i] == '1')
                  {
                      sum += pow(2, s.length() - i - 1);
                  }
              }
              cout << sum;
              return 0;
          }//已AC。
          
          • 3
            @ 2022-8-19 10:07:04

            全AC,请放心食用

            #include <bits/stdc++.h>
            using namespace std;
            int main()
            {
                string s;
                cin >> s;
                int len=s.length();
                int n=0;
                for(int i=0;i<len;i++)
                {
                   if(s[i]=='1')
                   {
                       n+=pow(2,len-1-i);
                   }
                }
                cout<<n;
                return 0;
            }
            
            • 0
              @ 2023-1-15 22:49:25

              #include <bits/stdc++.h> using namespace std; int main() { int ans = 0; string s; cin >> s; int j = s.length(); for (int i = 0; i < s.length(); i++) { int sum = 1; for (int x = 1; x < j; x++) { sum *= 2; } ans += (s[i] - '0') * sum; j--; } cout << ans; return 0; } 只因你太美

              • 1

              【入门】二进制转换十进制

              信息

              ID
              287
              时间
              1000ms
              内存
              256MiB
              难度
              4
              标签
              递交数
              494
              已通过
              240
              上传者