getchar||cin

P1604 B进制星球

@[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


|