storing more than 2 power 31 on a 32-bit system

前端 未结 6 839
别那么骄傲
别那么骄傲 2020-12-09 05:17

I have to write a program that can calculate the powers of 2 power 2010 and to find the sum of the digits. eg:

if `2 power 12 => gives 4096          


        
6条回答
  •  悲哀的现实
    2020-12-09 05:21

    Here's how you can calculate and print 22010:

    #include 
    #include 
    
    void AddNumbers(char* dst, const char* src)
    {
      char ddigit;
      char carry = 0;
    
      while ((ddigit = *dst) != '\0')
      {
        char sdigit = '0';
    
        if (*src != '\0')
        {
          sdigit = *src++;
        }
    
        ddigit += sdigit - '0' + carry;
    
        if (ddigit > '9')
        {
          ddigit -= 10;
          carry = 1;
        }
        else
        {
          carry = 0;
        }
    
        *dst++ = ddigit;
      }
    }
    
    void ReverseString(char* s)
    {
      size_t i, n = strlen(s);
    
      for (i = 0; i < n / 2; i++)
      {
        char t = s[i];
        s[i] = s[n - 1 - i];
        s[n - 1 - i] = t;
      }
    }
    
    int main(void)
    {
      char result[607], tmp[sizeof(result)];
      int i;
    
      memset (result, '0', sizeof(result));
      result[0] = '1';
      result[sizeof(result) - 1] = '\0';
    
      for (i = 0; i < 2010; i++)
      {
        memcpy(tmp, result, sizeof(result));
        AddNumbers(result, tmp);
      }
    
      ReverseString(result);
      printf("%s\n", result);
    
      return 0;
    }
    

    You can now sum up the individual digits.

提交回复
热议问题