当前位置:首页 > 题解目录 > 正文内容

【题解】大数取模

亿万年的星光3年前 (2023-01-07)题解目录20022

【题目描述】

求m%n。

【输入描述】

两个数,m和n。
【输出描述】

m模n的值。

【样例输入】

3

【样例输出】

2

【数据范围】

对于30%的数据, 1<m<10^18

对于70%的数据, m>10^18

【题目分析】

  • 题目描述非常简单,去m模n即可,但是从数据范围上看并不简单,题目的数据范围明显超过long long。所以,这个题目考虑用高精度的思想配合数论的知识进行求解

  • 使用高精度,用字符数组进行计算,那么转化用 a[i]-'0',所以数组的每一个a[i]只放一个数。

  • 用到了数论里的知识  (a+b)%p =(a%b + b%p) % p



假如1234是用高精度表示,那么这四个数字单独存在数组中,那么(1 2 3 4)%n  等价于 (1000 + 200+30+4)%n 

上面的知识我们拆分开就是:(1000 %n + 200 %n + 30%n +4 %n)%n。那么,基础代码就是 : ans*10+s[i]-'0'

 

【参考代码】

#include<bits/stdc++.h>
using namespace std;
int main() {
	int n;
	char m[1000];  
	cin>>m;
	cin>>n;
	int ans=0;
	for(int i=0; m[i]!='\0'; i++) {
		int temp=  (m[i]-'0');
		ans=((ans*10)%n  + temp %n)%n;
	}
	cout<<ans%n;
	return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】游戏

    【题目描述】上了半天的物理数学课,大家的脑子有点转不动了,下午的课表似乎看透了同学们的 心思,第一节就安排了体育课,CZ 中学的课表真是太有爱了,赞一个!午间休息后,文体 委员小 S 喊大家到教室外的...

    数列分段

    题目描述对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求。输入格式第1行包含两个正整数N,M,表示了数列A[i...

    【题解】解密

    【题解】解密

    【题目描述】给定一个正整数k,有k次询问,每次给定三个正整数ni,ei,di,求两个正整数pi,qi。使ni=pi *  qi,  ei * di =(pi -1) *(qi-1)...

    【题解】导弹拦截

    【题目描述】某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导...

    【题解】愤怒的牛

    【题目描述】农夫 John 建造了一座很长的畜栏,它包括N(2<=N<100000)个隔间,这些小隔间依次编号为x1,x2,...xn(0<=xi<=1000000000)。但...

    绝对素数

    【题目描述】如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13。试求出所有二位绝对素数。【输入描述】无【输出描述】所有二位绝对素数(由小到大,一个数一行)。【输入样例】无...