封装高精除
  • 板块学术版
  • 楼主幻想繁星NM 猫猫可爱
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/7/17 19:30
  • 上次更新2023/10/27 19:49:52
查看原帖
封装高精除
649095
幻想繁星NM 猫猫可爱楼主2022/7/17 19:30
#include<iostream>
#include<cstdio>
#include<cmath>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct gj//封装高精 
{
	int a[1000005],le,fh;
	gj()
	{
		memset(a,0,sizeof(a));
		fh=1;
		le=0;
	}
	void read()//输入 
	{
		char ch;
		ch=getchar();
		while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
		le=-1;
		if(ch=='-')
		{
			fh=-1;
			ch=getchar();
		}
		else fh=1;
		while(ch>='0'&&ch<='9')
		{
			a[++le]=ch-'0';
			ch=getchar();
		}
		reverse(a,a+le+1);
	}
	void print()//输出 
	{
		if(fh==-1) putchar('-');
		for(int i=le;i>=0;--i) putchar(a[i]+'0');
	}
};
gj operator / (const gj x, const ll y);//封装高精除法(高精除单精)
int main()
{
	ios::sync_with_stdio(0);
	srand(0);
	gj a;
	ll b;
	a.read();
	cin>>b;
	gj c=a/b;
	c.print();
	return 0;
}
gj operator / (const gj x, const ll y)//封装高精除法(高精除单精) 
{
	gj a,c; 
	ll b=y,w=0;
	a=x;
	if(a.fh*y>0) c.fh=1;
	else c.fh=-1;
	for(int i=a.le;i>=0;--i)
	{
		w*=10;
		w+=a.a[i];
		c.a[c.le++]=w/y;
		w=w%y;
	}
	c.le--;
	reverse(c.a,c.a+c.le+1);
	while(c.a[c.le]==0&&c.le>0) c.le--;
	if(c.le==0&&c.a[0]==0) c.fh=1;
	return c;
}

RE了,救救孩子吧!

2022/7/17 19:30
加载中...