求助,为啥我自测都对,但是全WA?
查看原帖
求助,为啥我自测都对,但是全WA?
192534
棒小糖楼主2020/5/31 14:24
#include<bits/stdc++.h>//万能头
#define Lf long double//利于输入的宏
using namespace std;//名空间
const Lf mod[14]={0.,2.,3.,5.,7.,11.,13.,17.,19.};//进位制
string a=",",b=",";//两个加数
Lf an[14],bn[14],s[14];//记录加数的值
int main()//主函数
{
    int al,bl,anl=0,bnl=0,last,sl;//al、bl分别为string a、b的长度,anl、bnl、sl分别是a、b、s的位数,last在输入时记录上一个逗号,a,b通用
    for(int i=1;;i++)
    {
    	a[i]=getchar();
    	if(a[i]=='+')
    	{
    		a[i]=',';
    		al=i;
    		break;
		}
	}//输入string a,直到遇到加号为止
	for(int i=1;;i++)
    {
    	b[i]=getchar();
    	if(b[i]=='\n')
    	{
    		b[i]=',';
    		bl=i;
    		break;
		}
	}//输入string b,直到遇到换行为止
	last=al;
	Lf tmp=0.;
	for(int i=al-1;i>=0;i--)
	{
		if(a[i]==',')
		{
			an[++anl]=tmp*pow(10.,last-i-2.);
			tmp=0.;
			last=i;
			continue;
		}
		tmp=tmp/10.+a[i]-'0';
	}//把a转换成数
	last=bl;
	tmp=0.;
	for(int i=bl-1;i>=0;i--)
	{
		if(b[i]==',')
		{
			bn[++bnl]=tmp*pow(10.,last-i-2.);
			tmp=0.;
			last=i;
			continue;
		}
		tmp=tmp/10.+b[i]-'0';
	}//把b转换成数
	sl=max(anl,bnl);
	for(int i=1;i<=sl;i++)
	{
		s[i]+=an[i]+bn[i];
		while(s[i]>=mod[i])
		{
			s[i+1]++;
			s[i]-=mod[i];
		}
	}//加法
	while(s[sl+1]>0)sl++;//调整s的位数
	printf("%.0Lf",s[sl]);
	for(int i=sl-1;i>=1;i--)
		printf(",%.0Lf",s[i]);//输出s
    puts("");//结尾照例换行
    return 0;//返回零,程序结束
}
2020/5/31 14:24
加载中...