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

【题解】大数取模

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

【题目描述】

求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;
}


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

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

分享给朋友:

相关文章

【题解】走出迷宫的最少步数

【题目描述】一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜...

【题解】黑白棋子移动

【题目描述】有2n个棋子(n≥4)排成一行,开始位置为白子全部在左边,黑子全部在右边,如下图为n=5的情形:○○○○○●●●●●移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可...

2的幂次方表示

【题目描述】任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7=22...

【题解】牛的阵容

【题目描述】农民约翰雇一个专业摄影师给他的奶牛拍照。由于约翰的牛有很多品种,他喜欢他的照片包含每个品种至少一头牛。约翰的牛都站在数轴的不同地方,每一头牛由一个整数位置 X_i 以及整数品种编号 ID_...

线段

题目描述在一个数轴上有n条线段,现选取其中k条线段使得这k条线段两两没有重合部分,问最大的k为多少?输入格式第一行为一个正整数n,下面n行每行2个数字ai,bi,描述每条线段。输出格式输出文件仅包括1...

【题解】摘花生问题

【题解】摘花生问题

【题目描述】Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过...