A1023 Have Fun with Numbers [大整数乘法]

在这里插入图片描述

//找质数,找能除的质数
#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<time.h>
#include<math.h>
using namespace std;
typedef long long ll;
int hashtable[10];
struct bign
{
	int d[1001];
	int length;
	bign()
	{
		memset(d, 0, sizeof(d));
		length = 0;
	}
};
bign change(char str[])
{
	bign a;
	a.length = strlen(str);
	for (int i = 0; i < a.length; i++)
	{
		a.d[i] = str[a.length - i - 1] - '0';
		hashtable[a.d[i]]++;
	}
	return a;
}
bign multi(bign a, int b)
{
	bign c;
	int carry = 0;
	for (int i = 0; i < a.length; i++)
	{
		int temp = a.d[i] * b + carry;
		c.d[c.length++] = temp % 10;
		carry = temp / 10;
	}
	while (carry != 0)
	{
		c.d[c.length++] = carry % 10;
		carry /= 10;
	}
	return c;
}
bool iscout(bign r)
{
	for (int i = r.length - 1; i>= 0; i--)
	{
		hashtable[r.d[i]]--;
	}
	for (int i = 0; i <10; i++)
	{
		if (hashtable[i] !=0)
			return false;
	}
	return true;
}
void print(bign a)
{
	for (int i = a.length - 1; i >= 0; i--)
	{
		cout << a.d[i];
	}
}
int main()
{
	char c[1001];
	cin >> c;
	bign a = change(c);
	bign b = multi(a, 2);
	if (iscout(b))
	{
		cout << "Yes" << endl;
		print(b);
	}
	else
	{
		cout << "No" << endl;
		print(b);
	}

}
posted @ 2020-07-16 17:32  _Hsiung  阅读(64)  评论(0编辑  收藏  举报