C++ 大数运算(加减乘除取模)
加法:(字符串模拟小学加法)
- string add(string s1, string s2) {
- int len1 = s1.length(), len2 = s2.length();
- int maxlen = max(len1, len2) + ;
- string res(maxlen, '');
- int flag = ;
- int i = len1 - , j = len2 - , k = maxlen - ;
- for (; i >= && j >= ; i--, j--) {
- int temp = (s1[i] - '') + (s2[j] - '') + flag;
- flag = temp / ;
- res[k--]= temp % + '';
- }
- while (i >= ) {
- int temp = s1[i--] - '' + flag;
- flag = temp / ;
- res[k--] = temp % + '';
- }
- while (j >= ) {
- int temp = s2[j--] - '' + flag;
- flag = temp / ;
- res[k--] = temp % + '';
- }
- res[k] = flag + '';
- if (flag) {
- return res;
- } else {
- return res.substr();
- }
- }
减法:
乘法:
除法:
取模:
1)(a * b) % m = (a % m * b % m) % m
= (a % m * b) % m
= (a * b % m) % m
2) (a + b) % m = (a % m + b % m) % m
= (a % m + b) % m
= (a + b % m) % m
举例子:
1234 % m = ((((1 * 10) + 2) * 10 + 3) * 10 + 4) % m
= (((((1 * 10) + 2) * 10 + 3) * 10) % m + 4) % m
= (((((1 * 10) + 2) * 10 + 3) % m * 10) % m + 4) % m
- long long mod(string s, int m) {
- //假设字符串s符合条件,代表一个整数(正数或者负数)
- int len = s.length();
- int start = ;
- if (s[] == '-') {
- start = ;
- }
- long long num = ;
- for (int i = start; i < len; i++) {
- num = (num * + s[i] - '') % m;
- }
- return num;
- }
C++ 大数运算(加减乘除取模)的更多相关文章
- Codeforces Round #260 (Div. 2) A B C 水 找规律(大数对小数取模) dp
A. Laptops time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- HDU4704Sum 费马小定理+大数取模
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4704 题目大意: 看似复杂,其实就是求整数n的划分数,4=1+1+2和4=1+2+1是不同的.因而可 ...
- hdu-5666 Segment(俄罗斯乘法or大数乘法取模)
题目链接: Segment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) P ...
- Powmod快速幂取模
快速幂取模算法详解 1.大数模幂运算的缺陷: 快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算 ...
- 《Java语言实现快速幂取模》
快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算过程中最麻烦的就是我们的5^1003这个过程 ...
- JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)
当基础数据类型长度无法满足需求时可以使用大数类 构造方法接受字符串为参数 BigInteger bInt = new BigInteger("123123"); BigDecima ...
- 【大数取模】HDOJ-1134、CODEUP-1086
1086: 大数取模 题目描述 现给你两个正整数A和B,请你计算A mod B.为了使问题简单,保证B小于100000. 输入 输入包含多组测试数据.每行输入包含两个正整数A和B.A的长度不超过1 ...
- 题解报告:hdu 1212 Big Number(大数取模+同余定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1212 Problem Description As we know, Big Number is al ...
- a ^ b mod c 取模运算优化反思(老物)
这是一篇嘲讽我之前的自己采用笨重愚蠢思想去解决问题的日志. RSA 加密与解密涉及到 a ^ b mod c 的问题,如何计算这个值呢? 我会选择 pow(a, b) % c, 事实上在写RSA的时候 ...
随机推荐
- JavaWeb_(SSH论坛)_二、框架整合
基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 导入Jar包 导 ...
- Nginx配置记录【例2】
B服务器,例: [root@localhost conf.d]# egrep -v "^#|^$" /etc/nginx/nginx.conf user nginx; worker ...
- C++入门经典-例6.12-使用数组地址将二维数组输出
1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数 ...
- mybatis 中的 update 返回值
摘自:https://www.jianshu.com/p/80270b93082a 如果定义一个如下的update函数,那么这个函数的返回值到底是啥意思呢?是受影响的行数吗? 验证之前我们先看看数据库 ...
- Mysql : Maximum execution time of 30 seconds exceeded
在向Mysql数据库中插入数据时,提示Maximum execution time of 30 seconds exceeded.......翻译:最大运行时间超过30秒. 最后在php.ini中找到 ...
- centos6 yum安装mysql 5.6 (完整版)
使用源代码编译安装mysql还是比较麻烦,一般来说设备安装时请网络同事临时开通linux上网,通过yum网络实现快速安装,或配置yum仓库进行内网统一安装. 通过网络快速安装过程如下 一.检查系统是否 ...
- PHP 设置Cookie值注意项
Cookie 中的value值只能添加设置为String类型的字符串数据,但我们需要添加如数组,json串等其他类型的数据时,我们就要先对数据进行转换,再存入Cookie里了. Cookie 存储数组 ...
- Mac 安装 Novicat
https://blog.csdn.net/jor_ivy/article/details/81323199 详细见这篇文章
- Android Studio在Make Project时下载Grandle特别慢
SDK下载完成了,建个工程, 又蒙了: Server returned HTTP response code: 502 for URL: https://services.gradle.org/dis ...
- 【sqlalchemy】使用正确的DB_URI却报错密码错误-密码中包含特殊符号导致
[原因] db_password密码中含有特定字符,比如含有@ %,则把密码部分进行URL编码 [解决办法] from urllib.parse import quote_plus as urlquo ...