__int128的读入读出模板

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__int128的读入读出模板相关的知识,希望对你有一定的参考价值。

__int128不支持cin,cout,scanf,printf对其定义的变量的输入输出,需自己另写输入输出函数。

模板:

void scan(__int128 &x)//输入
{
    x = 0;
    int f = 1;
    char ch;
    if((ch = getchar()) == '-') f = -f;
    else x = x*10 + ch-'0';
    while((ch = getchar()) >= '0' && ch <= '9')
        x = x*10 + ch-'0';
    x *= f;
}
void _print(__int128 x)
{
    if(x > 9) _print(x/10);
    putchar(x%10 + '0');
}
void print(__int128 x)//输出
{
    if(x < 0)
    {
        x = -x;
        putchar('-');
    }
    _print(x);
}

实战
在这里插入图片描述
https://www.acwing.com/problem/content/92/

#include <bits/stdc++.h>
using namespace std;
 
void scan(__int128 &x)//输入
{
    x = 0;
    int f = 1;
    char ch;
    if((ch = getchar()) == '-') f = -f;
    else x = x*10 + ch-'0';
    while((ch = getchar()) >= '0' && ch <= '9')
        x = x*10 + ch-'0';
    x *= f;
}
void _print(__int128 x)
{
    if(x > 9) _print(x/10);
    putchar(x%10 + '0');
}
void print(__int128 x)//输出
{
    if(x < 0)
    {
        x = -x;
        putchar('-');
    }
    _print(x);
}
 
int main()
{
    __int128 a,b,p;
    scan(a); scan(b); scan(p);
    print(a%p*b%p%p);
    return 0;
}

以上是关于__int128的读入读出模板的主要内容,如果未能解决你的问题,请参考以下文章

__int128模板 输入输出

__int128 输入输出模板

__int128使用

这是一份简易的ACM模板

内联汇编代码和存储 128 位结果

64位整数乘法讲解-And-AcWing-90. 64位整数乘法