@[mool](/space/show?uid=5945) ~~请亮出您的代码~~
by malloc_size @ 2019-04-12 06:40:28
既然用C++为什么不`cin`
by 禰豆子 @ 2019-04-12 11:38:33
@[桂丶言葉](/space/show?uid=153452) 常数
by memset0 @ 2019-04-12 11:50:54
@[memset0](/space/show?uid=53495) 捕捉大佬!
by 禰豆子 @ 2019-04-12 11:56:02
@[malloc_size](/space/show?uid=131394) ```cpp
#include<bits/stdc++.h>
using namespace std;
const int maxn=2050;
int base;
char s[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int get_num(char c){
if (isdigit(c))
return c-48;
return c-'A'+10;
}
struct bigInt{
char d[maxn]={'0'};
int len=0;
bigInt(){
for (int i=1;i<maxn;i++)
d[i]='0';
}
void input(){//这儿和开始的base快读用的getchar,然后就wa,现在是cin ac代码
char tmp[maxn];
cin>>tmp;
len=strlen(tmp);
for (int i=1;i<=len;i++)
d[i]=tmp[len-i];
}
void print(){
for (int i=len;i>=1;i--)
putchar(d[i]);
putchar('\n');
}
void set(char s[],int len){
for (int i=1;i<=len;i++)
d[i]=s[i];
this->len=len;
for (int i=len+1;i<maxn;i++)
d[i]='0';
}
bigInt operator+(bigInt&x){
bigInt ans;
int l=max(len,x.len);
char tmp[maxn]={'0'};
for (int i=1;i<=maxn;i++)
tmp[i]='0';
for (int i=1;i<=l;i++){
int t=get_num(d[i])+get_num(x.d[i]);
tmp[i]=s[get_num(tmp[i])+t];
if (get_num(tmp[i])>=base){
int r=get_num(tmp[i]);
tmp[i]=s[r%base];
tmp[i+1]=s[get_num(tmp[i+1])+r/base];
}
}
if (get_num(tmp[l+1]))
++l;
ans.set(tmp,l);
return ans;
}
};
inline int read(){
register int f=1,ans=0;
char ch=getchar();
while(!isdigit(ch)){
if (ch=='-')
f=-1;
ch=getchar();
}
while(isdigit(ch)){
ans=(ans<<3)+(ans<<1)+ch-48;
ch=getchar();
}
return ans*f;
}
int main(int argc, char const *argv[])
{
cin>>base;
bigInt a,b,c;
a.input();
b.input();
c=a+b;
c.print();
return 0;
}
```
by mool @ 2019-04-12 12:14:12
```
#include<bits/stdc++.h>
using namespace std;
const int maxn=2050;
int base;
char s[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int get_num(char c){
if (isdigit(c))
return c-48;
return c-'A'+10;
}
struct bigInt{
char d[maxn]={'0'};
int len=0;
bigInt(){
for (int i=1;i<maxn;i++)
d[i]='0';
}
void input(){
char tmp[maxn];
cin>>tmp;
len=strlen(tmp);
for (int i=1;i<=len;i++)
d[i]=tmp[len-i];
}
void print(){
for (int i=len;i>=1;i--)
putchar(d[i]);
putchar('\n');
}
void set(char s[],int len){
for (int i=1;i<=len;i++)
d[i]=s[i];
this->len=len;
for (int i=len+1;i<maxn;i++)
d[i]='0';
}
bigInt operator+(bigInt&x){
bigInt ans;
int l=max(len,x.len);
char tmp[maxn]={'0'};
for (int i=1;i<=maxn;i++)
tmp[i]='0';
for (int i=1;i<=l;i++){
int t=get_num(d[i])+get_num(x.d[i]);
tmp[i]=s[get_num(tmp[i])+t];
if (get_num(tmp[i])>=base){
int r=get_num(tmp[i]);
tmp[i]=s[r%base];
tmp[i+1]=s[get_num(tmp[i+1])+r/base];
}
}
if (get_num(tmp[l+1]))
++l;
ans.set(tmp,l);
return ans;
}
};
inline int read(){
register int f=1,ans=0;
char ch=getchar();
while(!isdigit(ch)){
if (ch=='-')
f=-1;
ch=getchar();
}
while(isdigit(ch)){
ans=(ans<<3)+(ans<<1)+ch-48;
ch=getchar();
}
return ans*f;
}
int main(int argc, char const *argv[])
{
cin>>base;//之前base用的快读,然后input方法是getchar 就wa
bigInt a,b,c;
a.input();
b.input();
c=a+b;
c.print();
return 0;
}
```
by mool @ 2019-04-12 12:16:30
@[malloc_size](/space/show?uid=131394)
```
#include<bits/stdc++.h>
using namespace std;
const int maxn=2050;
int base;
char s[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int get_num(char c){
if (isdigit(c))
return c-48;
return c-'A'+10;
}
struct bigInt{
char d[maxn]={'0'};
int len=0;
bigInt(){
for (int i=1;i<maxn;i++)
d[i]='0';
}
void input(){
char tmp[maxn];
cin>>tmp;
len=strlen(tmp);
for (int i=1;i<=len;i++)
d[i]=tmp[len-i];
}
void print(){
for (int i=len;i>=1;i--)
putchar(d[i]);
putchar('\n');
}
void set(char s[],int len){
for (int i=1;i<=len;i++)
d[i]=s[i];
this->len=len;
for (int i=len+1;i<maxn;i++)
d[i]='0';
}
bigInt operator+(bigInt&x){
bigInt ans;
int l=max(len,x.len);
char tmp[maxn]={'0'};
for (int i=1;i<=maxn;i++)
tmp[i]='0';
for (int i=1;i<=l;i++){
int t=get_num(d[i])+get_num(x.d[i]);
tmp[i]=s[get_num(tmp[i])+t];
if (get_num(tmp[i])>=base){
int r=get_num(tmp[i]);
tmp[i]=s[r%base];
tmp[i+1]=s[get_num(tmp[i+1])+r/base];
}
}
if (get_num(tmp[l+1]))
++l;
ans.set(tmp,l);
return ans;
}
};
inline int read(){
register int f=1,ans=0;
char ch=getchar();
while(!isdigit(ch)){
if (ch=='-')
f=-1;
ch=getchar();
}
while(isdigit(ch)){
ans=(ans<<3)+(ans<<1)+ch-48;
ch=getchar();
}
return ans*f;
}
int main(int argc, char const *argv[])
{
cin>>base;//之前base用的快读,然后input方法是getchar 就wa
bigInt a,b,c;
a.input();
b.input();
c=a+b;
c.print();
return 0;
}
```
by mool @ 2019-04-12 12:17:16
@[桂丶言葉](/space/show?uid=153452)
emmmm getchar会快些呀
by mool @ 2019-04-12 12:19:04
~~lg公然卡常~~
by atarashiTLE @ 2020-01-18 16:39:31