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