(基于同余定理)大数取模
创始人
2025-05-31 23:11:26
0

22周赛 - Virtual Judge (vjudge.net)

https://vjudge.net/problem/LightOJ-1214/origin


Input starts with an integer T (≤ 525), denoting the number of test cases.

Each case starts with a line containing two integers a (-10200 ≤ a ≤ 10200) and b (|b| > 0, b fits into a 32 bit signed integer). Numbers will not contain any leading zeroes.

a能否被b整除


卡壳原因是mod没开long long,没有重视debug的重要步骤,爆范围的bug出现率目前是排行第一的,优先检查

#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
int main(){int t;cin >> t;for(int tt = 1;tt <= t;tt++){string s;ll m;cin >> s >> m;if(s[0] == '-') s.erase(0,1);ll mod = 0;for(int i = 0;i < s.size();i++){mod = ((mod * 10 % m) + (s[i] - '0') % m ) % m;}if(!mod)printf("Case %d: divisible\n",tt);else printf("Case %d: not divisible\n",tt);}return 0;
}

我本来是把思路记在自己的word文档里的,但为了帮助想搞懂题意的朋友们,还是把思路粘在文章最末尾

我的思路是没什么思路,只有一个两百次方的数肯定要用字符串来存
没见过此类大数取模的题,吃亏了
题解思路,字符串存数字,然后由同余定理,1234 % m等价于1000 % m + 200 % m + 3 % m + 4 % m
答案巧妙在于从左边开始枚举数位,组成一个数,来不断模m,通过数位操作使忽略后导零也合法。

字符串起始位置根据正负的不同,起点也不同,for循环的i在外面定义,根据字符串正负来取不同的值作为for循环初始可以较好的解决这个问题

此外s.erase()也是不错的选择

相关内容

热门资讯

走!到香港调解去 国际调解院公约签署仪式近日在香港举行,来自亚洲、非洲、拉美和欧洲85个国家和近20个国际组织的高级别...
《政务数据共享条例》出台 如何... 近日,《政务数据共享条例》正式出台,对政务数据的目录管理、共享使用、平台支撑等工作进行部署。目的是推...
促进协商民主广泛多层制度化发展 本报讯 (记者 方思伟) 6月6日,省政协主席张义珍率队到省新的社会阶层人士联谊会,看望住苏全国政协...
“硬核服务”培育更多硬科技企业... 本报记者  王  政 刘温馨 制图:汪哲平 近日,工业和信息化部等九部门联合印发《关于加快推进科技...
卸任山东省发改委副主任、省能源... 据滨州网消息,6月6日上午,市委党的建设工作领导小组会议召开。市委书记、市委党的建设工作领导小组组长...
新修订《山西省节约用水条例》即... 本报太原6月7日讯(实习记者 刘迎春)6月4日,省第十四届人民代表大会常务委员会第二十一次会议审议通...
完善中国特色现代企业制度,如何... 编者按 中国特色现代企业制度是中国特色社会主义制度的重要组成部分。党的二十大报告指出,完善中国特色现...
原创 法... “千里之堤毁于蚁穴”,这个成语用在考取法律从业者资格证的过程中,正好形象地说明了细节的重要性。很多人...
高芙逆转萨巴伦卡 首夺法网女单... 2025年法网女单决赛在世界前二之间展开,2号种子高芙经过三盘激战以6-7(5) 6-2 6-4逆转...
“特朗普私下质疑:马斯克的言行... 【文/观察者网 陈思佳】近日,美国总统特朗普和亿万富翁马斯克公开决裂,在社交媒体上隔空对骂,引发各界...