這題雖然是大數,但其實也就只到2^65,所以是可以用__int128直接處理的,不過一般的輸入輸出不支援__int128,所以可以利用下面的函數來IO。
bool num(char b){
return b<58 and b>47;
}
void input(__int128 &C){ //輸入
C=0;
char B;
bool Q=0;
while(B=getchar()){
if(!num(B)){
if(Q) C=-C;
if(B=='-') Q=1;
else return;
}
else C=(C*10)+(B-48);
}
}
void print(__int128 A){ //輸出
if(A<0) putchar('-'),A=-A;
if(!A) putchar('0');
int X[40];
for(int i=39;i>-1;--i)
X[i]=A%10,A/=10;
bool Q=0;
for(int i=0;i<40;++i){
if(Q) putchar(X[i]+48);
else if(X[i]) Q=1,--i;
}
putchar('\n');
}
這題雖然是大數,但其實也就只到2^65,所以是可以用__int128直接處理的,不過一般的輸入輸出不支援__int128,所以可以利用下面的函數來IO。
bool num(char b){
return b47;
}
void input(__int128 &C){ //輸入
C=0;
char B;
bool Q=0;
while(B=getchar()){
if(!num(B)){
if(Q) C=-C;
if(B=='-') Q=1;
else return;
}
else C=(C*10)+(B-48);
}
}
void print(__int128 A){ //輸出
if(A<0) putchar('-'),A=-A;
if(!A) putchar('0');
int X[40];
for(int i=39;i>-1;--i)
X[i]=A%10,A/=10;
bool Q=0;
for(int i=0;i<40;++i){
if(Q) putchar(X[i]+48);
else if(X[i]) Q=1,--i;
}
putchar('\n');
}
class IO128{
public:
#define num(b) (b<58&&b>47)
void input(__int128 &C){
C=0;
char B;
bool Q=0;
while(B=getchar()){
if(!num(B)){
if(Q) C=-C;
if(B=='-') Q=1;
else return;
}
else C=(C*10)+(B-48);
}
}
void print(__int128 A,char End){
if(!A) putchar('0'),putchar(End);
if(A<0) putchar('-'),A=-A;
int X[40];
for(int i=39;i>-1;--i)
X[i]=A%10,A/=10;
bool Q=0;
for(int i=0;i<40;++i){
if(Q) putchar(X[i]+48);
else if(X[i]) Q=1,--i;
}
putchar(End);
}
}IO128;
IO128.input( 你要儲存輸入的int128變數 )
IO128.print( 你要輸出的數 )