LightOJ1214 - Large Division(高精度取模 + 模板)

07.高精度取模 高精度取模 阅读详情

题目链接:

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


题目大意:

两个数 −10100<a<100100 , b 为 32bit范围内(其实并不是),需要用64位整型才可以。问a能否被 b 整除。


解题过程:

先用 Java 的大数类水过了,然后感觉应该用到数论的知识,想起来之前好像也有一道高精度取模的题,当初用 Python 水过去了,现在认真的学一下高精度取模。


题目分析:

显然这题正负号和是否整除无关,先忽略掉。

对于每一个整数,可以分解为如下的形式(以1234举例):
12345=((1×10+2)×10+3)×10+4
然后这里可以顺带取模(以模123为例):
12345mod123=(((1×10mod123+2)×10mod123+3)×10mod123+4)mod123


AC代码:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

char str[1123];
ll mod;

int main() {
    int T;
    scanf("%d", &T);
    for (int Case = 1; Case <= T; Case++) {
        scanf("%s %lld", str, &mod);
        int len = strlen(str);
        ll rst = 0;
        //忽略掉负号
        int i = str[0] == '-' ? 1 : 0;
        for (;i < len; i++) {
            rst = ((rst * 10) % mod + (str[i] - '0')) % mod;
        }
        //取模为0表示可以被整除
        if (rst == 0) {
            printf("Case %d: divisible\n", Case);
        }
        else {
            printf("Case %d: not divisible\n", Case);
        }
    }
}
高精度算法(加减乘除取模(均可以处理负数)) 高精度算法 前言 大数加法 不可以处理负数的模板 可以处理负数 大数减法 两个数都是整数,且相减结果大于0 两个数都是正整数,相减结果可以是负数 两个数均可以是负数 高精度乘法 两个数均可以是负数 大数除法 两个数均可以是负数 大数取模 阅读详情

相关推荐

高精度长整数运算库 长整数除法 与 取模运算 效率 与 乘法相当

长整数的四则运算, 采用字符串存储,与外部接口方便, 其中 长整数除法 与 取模运算 效率 与 乘法相当 除法运算中没有用到减法与乘法,只有加法和二进制移位运算 资源中包含: bignum.h bignum.lib bignum.dll 以及一个测试的函数: test.cpp 测试时,连接所提供的动态链接库!!

高精度取模

高精度取模 1)高精度对高精度取模(以在高精度除高精度中实现,此处不再赘述) 2)高精度对单精度取模 传入参数约定:传入第一参数为string类型,第二个为int型,返回值为string类型 算法思想:利用(a+b)%c=a%c+b%c。 算法复杂度:o(n). #include #include using namespace std; int mod(string a,in

LzyRapX 8442

变焦跟踪理论基础(如何在变焦过程中保持清晰)

如何在整个变焦过程中一直保持图像的清晰度或焦点是变焦跟踪的主要挑战。 当用户在缩放跟踪的情况下改变缩放时,设备保持对焦。 然而,在没有变焦跟踪的情况下,图像变得失焦,图像在变焦跟踪后由于自动对焦(AF)算法才最终对焦。...................................................

ChenYX的博客 20万+

高精度运算模板(大数运算)

转载于:https://blog.youkuaiyun.com/u013615904/article/details/43373601 在这里,我们约定,能用int表示的数据视为单精度,否则为高精度。所有函数的设计均采用带返回值的形式。 本文包含 1.高精度加法 2.高精度减法 3.高精度乘法 1)高精度乘高精度的朴素算法 2)高精度乘高精度FFT优化算法 3)高精度乘单精度 4.高精度除法...

wangtao的博客 692

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1356

记录:MCGS和正弦变频器通讯

触摸屏实现对变频器:启动、停止、频率设定、频率读取、电压读取、电流读取。通讯方式Modbus RTU。

m0_61837027的博客 1026

高精度除法与高精度取模

#高精度除法与高精度取模 高精度除法与高精度取模是建立在高精度减法上的,但是赛场上一般不会用C/C++去处理高精度,因为模板太长了,还容易出错,所以赛场一般使用Java或者Python处理高精度。这里记录这个模板仅仅是学习一下思维。 #include<bits/stdc++.h> using namespace std; typedef long long ll; int numa[1...

Joker_He的博客 1770

uniapp监听扫码枪键盘事件|无输入框式监听

一般的扫码枪通过USB或蓝牙连接手机或电脑,充当的是一个外接设备。当扫码后,扫码枪会自动识别内容,然后向连接的电脑或手机发送键盘事件keydown或keyup。

tcy9099的专栏 9748

【无标题】

高精度取模的用法

a13997460860的博客 399

疲劳容器的定义_FKM规范针对非焊接构件疲劳强度评估实例介绍(下篇)

一、写在前面FKM Inside ANSYS软件,该软件是在FKM 规范的基础上,在ANSYS Workbench内开发的进行非焊接构件及焊缝静强度和疲劳强度评估的工具包。基于ANSYS计算模型的信息,在图形用户界面定义相关设置,利用有限元分析计算结果,自动嵌入FKM规范要求的静强度计算和疲劳强度计算流程和方法,自动将应力结果和相关物理量传递给工具包,无须手动预先选择评估的热点区域,可以...

weixin_35925298的博客 1885

OTG原理讲解

摘要:USB OTG(On-The-Go)是USB 2.0的重要功能,允许设备在主机和从机间动态切换,实现设备间的直接通信。其核心机制是通过ID引脚电平判断角色:Micro-USB中接地为Host,悬空为Device;USB-C则通过CC引脚协商。电路设计需处理ID引脚连接和VBUS电源控制,MCU根据ID状态配置USB控制器模式。典型应用包括手机连接U盘、键盘等外设,极大扩展了移动设备的连接能力。

m0_49476241的博客 3218

高精度取模模板

高精度取模模板: 高精度取模可以这样用,但是有些题目不一定需要,比如有些题目只是判断一个数能不能被4整除,只需判断后两位之和即可,因为前面的数肯定是整百的,一定会被25的某个倍数整除,判断其他的数的时候也可以尝试这样做,找到这个数与另一个数的整十或者整百的 可以参考这个题目 //高精度取模: long long long_mod(string a, long long b) { int flag = 1, idx = 0; if(a[0] == '-') { flag

m0_46135444的博客 582

【ROS机器人系统】实验4 ROS简单应用:激光SLAM与导航

ROS简单应用:激光SLAM与导航 (1)了解机器人和SLAM之间关系 (2)了解激光SLAM (3)了解gmapping和导航

南京大学软件工程硕士在读 2146

LightOJ - 1214(大数取模)

链接:https://cn.vjudge.net/contest/276155#problem/K 求a能否整除b。 将大数分解为一个个数,例如123 = 1*10^2 + 2*10^1 + 3*10^0,逐个膜。 #include<iostream> #include<algorithm> #include<cstdio> #include<cs...

dukig的博客 239

【8】mctp & pldm

异步会check seq,保证不丢包,虽然发一条req,不用等,但是不能发下一条req,等上条response回来后才能发下一条。TO(tag owner)=1是request,TO=0是response,但是异步通信response由0改为1。如下还有kcs,i3c,serial等。

持续更新ing... 1080

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

poj2635

这个题主要是要学会高精度求模。 思路有二,首先转化成千进制,然后利用“同余模定理”,或称“同余定理”。 比较实用的几条规律: 例如,想求123%4,可以这么操作 (100%4+20%4+3%4)%4。利用了性质1、性质3。 为何把它化作千进制,因为利用性质三,可知其是正确的。化作千进制,求模就变成了不超过1000的数的模,虽然次数增多,但是可以求解大数的模。 #include

Daze 1357

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LightOJ 1214 Large Division(大整数取模)

题目链接: LightOJ 1214 Large Division 题意: 大整数取模。输入a,b(-10^200 <= a <= 10^200, b != 0, b是int),判断a能否整除b。 分析: 把大整数写成“从左向右”的形式:如:1234 = ((1 * 10 + 2) * 10 + 3) * 10 + 4.然后根据(n + m) % p = ((n % p) + (m % p

ramay7 1369

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LightOJ1214 - Large Division(大数取余)

题解:同余定理,注意b可能爆int代码#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include <set> #i

围巾的ACM博客 788

LightOJ 1214

因为 a 是个大数, b 不是,直接根据同余定理,把字符串 a 转化为数字的同时,不断地对 b 取模就好了       以下是 AC 代码     #include&lt;bits/stdc++.h&gt; using namespace std; #define ll long long int inline int read() { ll X=0,w=0; char c...

qq_40924940的博客 318

kuangbin专题十四 LightOJ 1214 大数除法

题意: 要你求大数除法,其中b会爆int,都是32位有符号来坑人的。。int31位有符号。 题解: 一个大数除法模板题#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define LL long long int const int MAXN=200+7; char

Start_to_crazy的博客 427

lightoj1214——大数取余

题目链接:http://lightoj.com/volume_showproblem.php?problem=1214 Given two integers, a and b, you should check whether a is divisible by b or not. We know that an integer a is divisible by an integer b if...

mumei的博客 377

LightOJ 1214 - Large Division (大数取余)

1214 - Large Division PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: 32 MB Given two integers, a and b, you should checkwhether

Grit_ICPC的博客 1056

高精度计算模板

1,高精度加法 算法复杂度O(n) #include #include #include using namespace std; const int L=110; string add(string a,string b)//只限两个非负整数相加 { string ans; int na[L]={0},nb[L]={0}; int

Eiffel的博客 7290

Large Division LightOJ - 1214 高精度(数论专题)

给定两个整数a和b,你应该检查a是否可以被b整除。我们知道,当且仅当存在整数c使得a = b * c时,整数a才能被整数b整除。 Input 开始会输入一个数字 T (≤ 525), 代表了样例数. 每个样例会给两个整数a (-10200 ≤ a ≤ 10200) and b (|b| > 0, b fits into a 32 bit signed integer). 数字不会包含前导零. Output For each case, print the case number first. Then

qq_45891413的博客 212
上一篇: LightOJ1236 - Pairs Forming LCM(LCM+唯一分解定理)
下一篇: LightOJ1197 - Help Hanzo(区间素数筛 + 模板)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值