关于高精减
  • 板块灌水区
  • 楼主ltmshumiao
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/12 21:19
  • 上次更新2024/9/13 13:18:42
查看原帖
关于高精减
1383031
ltmshumiao楼主2024/9/12 21:19

rt,楼主这只蒟蒻写到最后不知道那出了问题。 主诉:像1000−999这样的会出问题,1−2也会 需求:在源代码上改

#include<bits/stdc++.h>
using namespace std;
//#define bug
#define less
int main()
{
	string a,b,c="";
	cin>>a;
	cin>>b;
	int lena=a.size(),lenb=b.size();
	string stra="",strb="",strc="";
	int len=max(lena,lenb)+1;
	if(lena<lenb)
        for(int i=1;i<=lenb-lena;i++)
           a="0"+a;
    else
        for(int i=1;i<=lena-lenb;i++)
           b="0"+b;
    a="0"+a;
    b="0"+b;
	for(int i=len-1;i>=0;i--)
		stra+=a[i];
	for(int i=len-1;i>=0;i--)
		strb+=b[i];
    int x=0;
    bool flag=0;
    if(stra[len-1]<strb[len-1])
    	flag=1;
#ifdef bug
	printf("%s %s\n",stra.c_str(),strb.c_str());
	printf("%d\n",len);
	printf("%d\n",flag);
#endif
    for(int i=0;i<len-1;i++)
    {
    	x=0;
    	if(stra[i]<strb[i])
    		x=10,strb[i+1]-1;
    	int t;
		t=((stra[i]+x)-'0')-(strb[i]-'0');
#ifdef bug
		printf("%d %d %d\n",t,((stra[i]+x)-'0'),(strb[i]-'0'));
#endif
        strc=char(t+'0')+strc;
    }
#ifdef less
    if(flag)
		strc='-'+strc,len++;
#endif
	for(int i=len-1;i>=0;i--)
		c+=strc[i];
	while(len>1 && c[len-1]-48==0)
	{
		c.erase(len-1,1);
		len--;
	}
	strc="";
	for(int i=len-1;i>=0;i--)
		strc+=c[i];
	printf("%s",strc.c_str());
	
	return 0;
}

话说学术的人是不是越来越少了

2024/9/12 21:19
加载中...