高精度数取余(C\C++)
高精度数是OJ题目中最主要的一类题
用数组去模拟高精度数是目前最常用的方法
除此之外,还可以通过使用string去模拟也是可以的
取余,是高精度数中主要的一个算法。
这里主要展示自己的高精度数取余的一个操作函数
算法思路:
模拟数学中关于除法,和余数的定义,根据竖式表达式运算得到
PS:注意点是,temp部分是必须的,避免更改原来的数据,所以不能使用
a[i] += flag;操作
int Chu_left(int n){int flag = 0,temp = 0;for (int i = 0; i < size; ++i){flag *= 10;temp = a[i] + flag;flag = temp % n;}return flag;}
高精度数,附有取余操作的代码如下:
struct Num{int *a;int size;Num(){a = new int[100];size = 0;}Num(string &s){a = new int[s.size()];size = 0;for (int i = 0; i < s.size(); ++i){a[i] = s[i] - '0'; }size = s.size();}int Chu_left(int n){int flag = 0,temp = 0;for (int i = 0; i < size; ++i){flag *= 10;temp = a[i] + flag;flag = temp % n;}return flag;}~Num(){delete[] a;}
};
加上main函数部分,就可以做出SOJ1020题
int main(){int time, array_size, array[100], ans_array[100];cin >> time;while (time--) {cin >> array_size;for (int i = 0; i < array_size; ++i){cin >> array[i];}string num;cin >> num;Num n(num);cout<< "("; for (int i = 0; i < array_size; ++i){cout << n.Chu_left(array[i]);if (i != array_size-1){cout << ",";} else {cout << ")\n";}}}
}
欢迎关注我用于做笔记的公众号:肥宅Sean笔记
高精度数取余(C\C++)相关推荐
- 0对任何数取余_大数取余
有一类题目会因为求出的结果太大而只要求输出对某个数m取余后的结果,而且这个m是比较小的数,比如不超过32位整数- 而这类大数都是可以由较小的数经过某些运算得到的- 于是我整理了一下对付几种运算的方法- ...
- 0对任何数取余_初等数论_第五章__同余方程
第五章同余方程 本章主要介绍同余方程的基础知识,并介绍几类特殊的同余方程的解法. 第一节同余方程的基本概念 本节要介绍同余方程的基本概念及一次同余方程. 在本章中,总假定m是正整数. 定义1设f(x) ...
- (C++)除基取余法:将十进制数转化为Q进制数
所谓基,就是指将要转换成的进制Q. 除基取余的意思就是:每次将待转换数除以Q,然后将得到的余数作为低位存储,而商则继续除以Q并重复上面的操作,直至商0时,将所有位从高到低输出就可以得到Q进制数. 代码 ...
- UVA 10494 - If We Were a Child Again(高精度除法和取余)
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 输入一个四位数将其加密后输出c语言,输入一个四位数,将其加密后输出.方法是将该数每一位的数字加9,然后除以10取余作为该位上的新数字,最后将千位上的数字和十...
问题描述: 输入一个四位数,将其加密后输出.方法是将该数每一位的数字加9,然后除以10取余作为该位上的新数字,最后将千位上的数字和十位上的数字互换,组成加密后的新四位数. #include int m ...
- 数制转换,使用按权展开法将二进制数转换为十进制数,使用短除法除2取余计算十进制数转换为二进制数
1:数制转换 1.1 问题 1)请将下列数字转换为十进制数: (110010011111)2 .(10110101110)2 2)请将下列十进制数转换为二进制: 156.2608.1043 1.2 方 ...
- 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。
给你两个整数,被除数 dividend 和除数 divisor.将两数相除,要求 不使用 乘法.除法和取余运算. 整数除法应该向零截断,也就是截去(truncate)其小数部分.例如,8.345 将被 ...
- 蓝桥杯算法训练之数对(取余取整)
问题描述 编写一个程序,该程序从用户读入一个整数,然后列出所有的数对,每个数对的乘积即为该数. 输入格式:输入只有一行,即一个整数. 输出格式:输出有若干行,每一行是一个乘法式子.(注意:运算符号与数 ...
- (C++)1022 D进制的A+B 除基取余法将10进制数换成给定进制数
#include<cstdio> //除基取余法 const int M = 30;int main(){long long a,b,c;int D,ans[M+2];scanf(&quo ...
最新文章
- 【转载】nginx for windows: 让nginx以服务的方式运行
- DP专练2 (大理石 + [ZJOI 2010]数字计数)
- LeetCode 71. 简化路径(栈)
- 安装mysql查看随机密码命令_centos7/8 yum安装mysql8并查看默认root密码
- C语言求字符串并集,怎样用c语言写求集合的交集,并集,补集”这个程序?
- 统计学习方法——第四章朴素贝叶斯及c++实现
- js对文字的修饰 big() small() fixed() toUpperCase() toLowerCase()
- 电子邮件地址中服务器怎么看,你如何检查电子邮件服务器(gmail)中的某个地址,并基于该地址运行一些东西?...
- 北京科技大学计算机博士统考,北京科技大学计算机与通信工程学院2016年博士录取方案...
- C语言学习-翁凯(第五章笔记)
- 「题解」agc031_e Snuke the Phantom Thief
- import java util_java里面import java.util.*;是什么用处?
- DirectX End-User Runtimes2010 dl
- 64位 regsrv win10_有没有 极品飞车9 win10 64位的中文补丁
- excel自动筛选_在Excel 2007中按选择自动筛选
- 中心极限定理与大数定理理解
- 免注册登陆以及QQ登陆
- 读书百客:《走马川行奉送出师西征 / 走马川行奉送封大夫出师西征》赏析
- [有奖活动进行中]阿里数据库专家曾文旌为你解决数据库那些事
- mysql多表联合查询练习题