我认为高精度加法可以用数组来搞,但输入的定义要用string,所以最终还是要拆分数字,特判进位的情况,有没有人用这个方法,会不会超时????对于这道题你们有更好的想法吗? 仅限c++;
大家好,我是来做挑战的(看主页第一条),你们只要把我当空气就行,如果实在很介意,请私信或在评论区跟我说,我会删掉的!
#include[HTML_REMOVED] #include[HTML_REMOVED] #include[HTML_REMOVED] using namespace std; struct sd{ int t[300],len; }; sd readit() { char st[300];sd x; scanf(“%s”,st); memset(x.t,0,sizeof(x.t)); int len=strlen(st); int k=0; for (int i=len-1;i>=0;i–) { x.t[k++]=st[i]-‘0’; } x.len=len; return x; } sd add(sd x,sd y) { int len=x.len>y.len?x.len:y.len; for (int i=0;i[HTML_REMOVED]=1;i–) { if (x.t[i]>0) { x.len=i+1; break; } } return x; } sd jian(sd x,sd y){ int len=x.len>y.len?x.len:y.len; for (int i=0;i[HTML_REMOVED]=1;i–) { if (x.t[i]>0) { x.len=i+1; break; } } return x; } void outit(sd x) { for (int i=x.len-1;i>=0;i–) printf(“%d”,x.t[i]); printf(“\n”); } int main() { //freopen(“t1.in”,”r”,stdin); //freopen(“t1.out”,”w”,stdout); sd a=readit(),b=readit(),c; c=jian(a,b); outit(c); return 0; }
快读
所以呢
可以省时间啊(输入数据很大的时候),省200ms左右
懂了吗,您?
嗯
大家好,我是来做挑战的(看主页第一条),你们只要把我当空气就行,如果实在很介意,请私信或在评论区跟我说,我会删掉的!
#include[HTML_REMOVED]
#include[HTML_REMOVED]
#include[HTML_REMOVED]
using namespace std;
struct sd{
int t[300],len;
};
sd readit()
{
char st[300];sd x;
scanf(“%s”,st);
memset(x.t,0,sizeof(x.t));
int len=strlen(st);
int k=0;
for (int i=len-1;i>=0;i–)
{
x.t[k++]=st[i]-‘0’;
}
x.len=len;
return x;
}
sd add(sd x,sd y)
{
int len=x.len>y.len?x.len:y.len;
for (int i=0;i[HTML_REMOVED]=1;i–)
{
if (x.t[i]>0)
{
x.len=i+1;
break;
}
}
return x;
}
sd jian(sd x,sd y){
int len=x.len>y.len?x.len:y.len;
for (int i=0;i[HTML_REMOVED]=1;i–)
{
if (x.t[i]>0)
{
x.len=i+1;
break;
}
}
return x;
}
void outit(sd x)
{
for (int i=x.len-1;i>=0;i–)
printf(“%d”,x.t[i]);
printf(“\n”);
}
int main()
{
//freopen(“t1.in”,”r”,stdin);
//freopen(“t1.out”,”w”,stdout);
sd a=readit(),b=readit(),c;
c=jian(a,b);
outit(c);
return 0;
}
快读
所以呢
可以省时间啊(输入数据很大的时候),省200ms左右
懂了吗,您?
嗯