换了个写法……然后WA
查看原帖
换了个写法……然后WA
1046223
a_blue_fool楼主2023/12/21 17:38
#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <cmath>

using namespace std;

class num
{
    public:
        int sum[5000] , len; 

        num (string in = "0")
        {
            memset(sum , 0 , sizeof(sum));

			len = in.size();
			
			for (int i = len - 1 ; i >= 0 ; i--)
			{
				sum[i] = in[len - i - 1] - 48;
			}
        }

        void print()
        {	
            for (int i = len - 1; i >= 0 ; i--)
            {
            	//printf("%d" , sum[i]);
                putchar(sum[i]+48);
            } 
        }

        void save()
        {
            for (int i = 0 ; i <= len ; i++)
            {
                sum[i+1] += sum[i]/10;
                sum[i] %= 10;
            }

            while (!sum[len-1])
            {
                len--;
            }
            
            if (len == 0) len++;
        }
        
        void get()
        {
        	string tmp;
        	cin >> tmp;
        	
        	memset(sum , 0 , sizeof(sum));

			len = tmp.size();
			
			for (int i = len - 1 ; i >= 0 ; i--)
			{
				sum[i] = tmp[len - i - 1] - 48;
			}
		}

        int &operator [] (int i)
        {
            return sum[i];
        }
};

num operator * (num a , num b)
{
	num ou;
	
	ou.len = a.len + b.len;
	
	for (int i = a.len-1 ; i >= 0 ; i--)
	{
		for (int j = b.len-1 ; j >= 0 ; j--)
		{
			ou[i+j] += a[i]*b[i];
		}
	}
	
	ou.save();
	
	return ou;
}

int main()
{
	num a , b , c;
	
	a.get();b.get();
	
	c = a * b;
	c.print();
	
    return 0;
}

发现好像是计算出了问题:比如10*10 = 110.但没查出问题希望大佬救救!!!

2023/12/21 17:38
加载中...