名前空間IO { の#define BUF_SIZE 100000 の#define OUT_SIZE 100000 の#defineが長い長いっ // fread->読み取る BOOLのioerror = 0。 インラインチャーNC(){ [BUF_SIZE] BUF静的CHAR、* P1 = BUF + BUF_SIZE、* PEND = BUF + BUF_SIZE。 IF(P1 == PEND){ P1 = BUF。PEND = BUF +のfread(BUF、1、BUF_SIZE、STDIN)。 (PEND == P1)場合{のioerror = 1、-1を返す;} // {のprintf( "IOエラーを\ N!");システム( "一時停止");(;;)のために、出口(0);} } リターン* p1の++; } インラインブールブランク(チャーCH){戻りCH == ' '|| CH ==' \ n '|| CH ==' \ R '|| CH ==' \ Tを';} インラインボイドリード(INT&X ){ BOOL符号= 0。チャーCH = NC()。X = 0。 用(;ブランク(CH)、CH = NC())。 (例外IOError)の復帰であれば、 IF(CH == ' - ')記号= 1、CH = NC()。 用(; CH> = '0' && CH <= '9'; CH = NC())X = X * 10 + CH-'0' 。 (記号)は、x = -xであれば、 } インラインボイド読み取る(LL&X){ BOOL符号= 0。チャーCH = NC()。X = 0。 用(;ブランク(CH)、CH = NC())。 (例外IOError)の復帰であれば、 IF(CH == ' - ')記号= 1、CH = NC()。 用(; CH> = '0' && CH <= '9'; CH = NC())X = X * 10 + CH-'0' 。 (記号)は、x = -xであれば、 } インラインボイドを読み取る(ダブル&X){ BOOL符号= 0。チャーCH = NC()。X = 0。 (例外IOError)の復帰であれば、 用(; CH> = '0' && CH <= '9'; CH = NC())X = X * 10 + CH-'0' 。 (CH == '')であれば{ ダブルTMP = 1。CH = NC()。 用(; CH> = '0' && CH <= '9'; CH = NC())TMP / = 10.0、X + = TMP *(CH-'0' )。 } (記号)は、x = -xであれば、 } インラインボイド(チャー*秒){読み取り チャーCH = NC()。 用(;ブランク(CH)、CH = NC())。 (例外IOError)の復帰であれば、 (!;空白(CH)&&例外IOError;!CH = NC())* S ++ = CHため、 * S = 0。 } インラインボイド読み取る(チャー&C){ 用(C = NC();ブランク(C)C = NC())。 (例外IOError){C = -1であれば、返します。 Ostream_fwrite(){BUF =新しいCHAR [BUF_SIZE]; P1 = BUF;保留= BUF + BUF_SIZE;} アウトボイド(チャーCH){ IF(P1 == PEND){ 関数fwrite(BUF、1、BUF_SIZE、STDOUT ); P1 = BUF。 } * P1 ++ = CH。 } ボイドプリント(INT X){ 静的チャーS [15]、*、S1、S1 = S。 (!x)は、* S1 ++ = '0'の場合、(x <0の)アウト( ' - ')の場合、X = -x; 一方、(X)* S1 ++ = X%10 + '0'、X / = 10。 しばらく(S1 - = S!)アウト(* S1)。 } ボイドのprintln(INT X){ 静的チャーS [15]、*、S1、S1 = S。 (!x)は、* S1 ++ = '0'の場合、(x <0の)アウト( ' - ')の場合、X = -x; 一方、(X)* S1 ++ = X%10 + '0'、X / = 10。 しばらく(S1 - = S!)アウト(* S1)。アウト( '\ n')で。 } ボイドプリント(LLのX){ 静的チャーS [25]、*、S1、S1 = S。 (!x)は、* S1 ++ = '0'の場合、(x <0の)アウト( ' - ')の場合、X = -x; 一方、(X)* S1 ++ = X%10 + '0'、X / = 10。 しばらく(S1 - = S!)アウト(* S1)。 } ボイドのprintln(LLのX){ 静的チャーS [25]、*、S1、S1 = S。 (!x)は、* S1 ++ = '0'の場合、(x <0の)アウト( ' - ')の場合、X = -x; 一方、(X)* S1 ++ = X%10 + '0'、X / = 10。 しばらく(S1 - = S!)アウト(* S1)。アウト( '\ n')で。 } ボイドプリント(二重のx、int型のY){ MUL [] = {1,10,100,1000,10000,100000,1000000,10000000,100000000、LL静的 1000000000,10000000000LL、100000000000LL、1000000000000LL、10000000000000LL、 100000000000000LL、1000000000000000LL、10000000000000000LL、100000000000000000LL}。 IF(X <-1E-12)アウト( ' - ')、X = -x; X * = MUL [Y]。 LL×1 =(LL)床(X)(X-床(X)> = 0.5)++ X1場合。 LLのX2 = X1 / MUL [Y]、X3 = X1-X2 * MUL [Y]。印刷(×2)。 もし(Y> 0){OUT( ''); (i = 1からsize_tのうち( '0')、++ I; iがMUL [I] <MUL [Y] * Y && X3を<)のために、プリント(X3);} } ボイドのprintln(ダブルのx、int型のY){プリント(x、y)は、OUT( 'の\ n');} ボイドプリント(チャー*秒){(* S ++(* S)うち一方);} ボイドのprintln(チャー*秒){ながら(* S)OUT(* S ++);アウト( 'の\ n');} ボイドフラッシュ(){IF(!P1 = BUF){関数fwrite(BUF、1、P1-BUF 、STDOUT); P1 = BUF;}} 〜Ostream_fwrite(){ フラッシュ();} }のostream。 インラインボイドプリント(INT X){Ostream.print(x);} インラインボイドプリント(チャー*秒){Ostream.print(S);} インラインボイドのprintln(チャー*秒){Ostream.println(S);} インラインボイドのprintln(){Ostream.out( 'の\ n');} インラインボイドのprintln(INT X){Ostream.println(X)。 インラインボイドのprintln(チャーX){Ostream.out(X); Ostream.out( 'の\ n');} インラインボイドプリント(LLのX){Ostream.print(x);} インラインボイドのprintln(LL x)から{ Ostream.println(x);} インラインボイドプリント(二重のx、int型のY){Ostream.print(X、Y);} インラインボイドのprintln(ダブルのx、int型のY){Ostream.println(X、Y);} インラインボイドフラッシュ(){Ostream.flush();} #undefのLL の#undef OUT_SIZE の#undef BUF_SIZE }。
なぜ人々は、n ^ 2 $百万シリーズを$することができます