目录
大数取模问题
给定一个mod = 1e9 +7,输入一个很大很大的数字,要求输出对mod取模后的结果
字符串按位相加进位模拟 解题思路:
首先这个数字很大,long long存不下,所以用string,然后根据加法取模的性质,进行每次拿一位出来再乘十,然后就取模一次,保证他不会爆掉(关于答案是否正确,直接记住概念是正确的就行,举个例子,当一个数字进行模拟,然后3000 % 3000 和300000 % 3000的答案是一样的)
#include <iostream>
using namespace std;
const int mod = 1e9 + 7;
int main()
{
//保证存下比long long还大的数
string a;
cin >> a;
int ans = 0;
for(auto i: a)
{
//一位一位的取出然后乘十(之所以这样写是因为,第一次要先乘再加,不然到最后就多乘了一个10)
ans = (ans * 10 + (i - '0')) % mod;
}
cout << ans;
return 0;
}