读入各种类型的代码

· · 个人记录

16 t^{10}-64 t^9+160 t^8-384 t^7+512 t^6-544 t^5+456 t^4+126 t^3+3 t^2-4 t-177162=0 t=\frac{a}{4} t$代入$x$,得$t^4-2t^3+3t^2-4t-(4t+b)=0

b=t^4-2t^3+3t^2-4t-4t

再将a,b带入前a,b式即得关于t的方程,解得t=3

从而a=4t=12,b=t^4-2t^3+3t^2-4t-4t=30

读int

inline int read()
{
    char c=getchar();int sum=0,f=1;
    while(!(c>='0'&&c<='9')) {if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9') {sum=((sum<<1)+(sum<<3))+(c-'0');c=getchar();}
    return sum*f;
}

读long long

inline long long read()
{
    char c=getchar();long long sum=0,f=1;
    while(!(c>='0'&&c<='9')) {if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9') {sum=((sum<<1)+(sum<<3))+(c-'0');c=getchar();}
    return sum*f;
}

读char

用getchar/scanf容易误读回车,空格

此方法支持选择是否读空格
char cread(bool k)//k==1,支持空格 
{
    char c=getchar();
    while(c=='\n'||c=='\r'||!(c!=32||k)) c=getchar();
    return c;
}

读string

支持选择是否读空格
string sread(bool k)//k==1,支持空格 
{
    string s;
    s.clear();
    char c=getchar();
    while(c=='\n'||c=='\r'||!(c!=32||k)) c=getchar();
    while(c!='\n'&&c!='\r'&&(c!=32||k)) s+=c,c=getchar();
    return s;
}

带" "的输出字符

void cpt(char c,bool b)//b==1,输出回车,否则不输出 
{
    printf("\"%c\"",c);
    if(b) printf("\n");
    return;
}

带" "的输出字符串

void spt(string s,bool b)//b==1,输出回车,否则不输出
{
    cout<<"\""<<s<<"\"";
    if(b) printf("\n");
    return;
}

upd 2020.1.11 简化了一些输入方式