[C ++] Ausgabeoptimierung (schnelles Schreiben)

Prinzip

Wie wir alle wissen, ist putchar () eine Funktion zum Ausgeben eines einzelnen Zeichens.
Daher wird jede Ziffer der Zahl zur Beschleunigung in eine Zeichenausgabe umgewandelt.
Es ist zu beachten, dass das Minuszeichen separat beurteilt werden muss und% (mod) aus der letzten Ziffer der Zahl herausgenommen wird, sodass es in umgekehrter Reihenfolge ausgegeben werden muss .

Code-Implementierung

Allgemeines schnelles Schreiben:

inline void write(int x) {
	if(x<0) {
		x=-x;
		putchar('-');
	}
	if(x>9) write(x/10);  
	putchar(x%10+'0'); 
}

Da die rekursive Implementierungskonstante jedoch größer ist, können wir einen Stapel schreiben, um diesen Prozess zu erreichen:

inline void write(int x) {
	static int sta[35];
	int top=0;
	do {
		sta[top++]=x%10, x/=10;
	} while(x);
	while(top) putchar(sta[--top]+'0');
}

Schnelles Schreiben unabhängig vom Integer-Typ:

template <typename T>
inline void write(T x) {
    if(x<0) putchar('-'),x=-x;
    if(x<10) putchar(x+'0');
        else write(x/10),putchar(x%10+'0');
}

fwrite

#include <cctype>
#include <cstdio>

typedef long long LL;

#define bsiz 1000000

int sta[30];
char buf[bsiz], pbuf[bsiz], *p = pbuf, *s = buf, *t = buf;

#define mputc(ch) (p - pbuf == bsiz ? fwrite(pbuf, 1, bsiz, stdout), p = pbuf, *p++ = ch : *p++ = ch)

inline void putll(LL x) {
    register int top = 0;
    if (x<0) mputc('-'), x = -x;
        do sta[top++] = x % 10, x /= 10;
    while (x);
    while (top) mputc(sta[--top] + '0');
}

int main() {
    LL ans=123;
	putll(ans);
    fwrite(pbuf, 1, p - pbuf, stdout);
    printf("\n");
	return 0;
}

Verwandte Artikel

Eingabeoptimierung (schnelles Lesen): https://blog.csdn.net/Ljnoit/article/details/104161565

Veröffentlicht 106 Originalarbeiten · erntete Lob 156 · Ansichten 40000 +

Ich denke du magst

Origin blog.csdn.net/Ljnoit/article/details/104861089
Empfohlen
Rangfolge