余数

第八周周末总结(二进制转十进制总结)

走远了吗. 提交于 2020-01-27 05:29:17
二进制与十进制的“战争” 题外话 周六我们首先讨论了关于软件更新的问题,当你看见软件提示更新后,你会更新吗? 许多同学表达了自己的看法,表示不会更新,费流量费时间,而老师表示他会立即更新,更新后的软件可以更好的帮助我们工作生活,体现不同思维:穷人=怀疑+拒绝,富人=接受+了解。你是愿意当穷人还是富人呢? 什么是二进制? 二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,当前的计算机系统使用的基本上是二进制系统,所以我们要对二进制有所了解。 什么是十进制计数法? 十进制计数法是相对二进制计数法而言的,是我们日常使用最多的计数方法(俗称“逢十进一”),它的定义是:“每相邻的两个计数单位之间的进率都为十”的计数法则,就叫做“十进制计数法”。 二进制与十进制之间的转换 二进制转为十进制的时候,先把二进制从高位(最左边的“1”)开始按从上到下的顺序写出 ,第一位就是最后的商 “2 2 = 1 余0 “,余数肯定是加零。其他位数如果有”1“(原来的余数),就先乘以”2“再加”1“。 下面就是从第一位开始乘以2加余数的方法算回去 例如 100101110 1…………0 2+1=1…………余数为1 0…………1 2+0=2………… 余数为0 0 …………2 2+0=4 ………… 余数为0 1 …………4x2+1=9……………… 余数为1 0…………9x2+0=18 ……

斐波那契数列对10007取余数

ぃ、小莉子 提交于 2020-01-27 00:10:58
Mn = ( Mn-1 + Mn-2 ) % 10007 因为 *F(n) = X1 * 10007 + Mn F(n+1) = X2 * 10007 +Mn+1 F(n+2) = F(n) + F(n+1) =(X1 + X2)+100007 + Mn + Mn+1 Mn+2 = F(n+2) / 10007 = Mn + Mn+1 所以 Mn = ( Mn-1 + Mn-2 ) % 10007 # include <iostream> int main ( ) { int a = 1 , b = 0 , sum = 0 , t = 0 , n ; std :: cin >> n ; while ( ++ t <= n ) { sum = ( a + b ) % 10007 ; a = b ; b = sum ; } std :: cout << sum ; return 0 ; } 来源: CSDN 作者: Yicay 链接: https://blog.csdn.net/qq_15757015/article/details/104089657

蓝桥杯入门训练

允我心安 提交于 2020-01-26 23:54:25
原题链接: http://lx.lanqiao.cn/problem.page?gpid=T4 入门训练: Fibonacci数列Description Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。Input输入描述: 输入包含一个整数n。 输入样例: 10 输出描述: 输出一行,包含一个整数,表示Fn除以10007的余数。 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 输出样例: 55 时间限制:1.0s 内存限制:256.0MB 1 <= n <= 1,000,000。 重点语句: 计算出余数即可 不需要计算Fn的准确值 解题思路: 加法和对数取余的结果与分开取余的结果相同 即:(a + b) % c == a % c + b % c you can try it: (3 + 4) % 2 = 1 3 % 2 = 1 plus 4 % 2 = 0 is 1, so it's right! 代码展示 # include <stdio.h> int main ( void ) { int i , index , i_num ;

Fibonacci数列

烈酒焚心 提交于 2020-01-23 04:12:15
备战蓝桥杯 菜鸟学习算法的第二天 相对于第一天,第二天对判题系统以及编码格式已经比较熟悉了。今天把入门题做完了,也有不少收获,主要写一下Fibonacci数列这道题。 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000。 看到此题,第一思路直接就是用数组存Fibonacci数列,然后直接对10007取余。但是存在溢出错误,所以不能采用此方法。 这道题关键要用到 余数的加法定理 : a与b的和除以c的余数,等于a,b分别除以c的余数之和用这个和除以c的余数。 即:(a+b)%c = (a%c+b%c)%c 例如:23,16除以5的余数分别是3和1,所以23+16=39除以5的余数等于4,即两个余数的和3+1. 当余数的和比除数大时,所求的余数等于余数之和再除以c的余数。 例如:23,19除以5的余数分别是3和4,故23+19=42除以5的余数等于3+4=7除以5的余数,即2. 知道这个定理之后就可以解决这道题了

PAT乙级1017

不打扰是莪最后的温柔 提交于 2020-01-22 23:17:56
1017 A除以B (20分) 题目地址: https://pintia.cn/problem-sets/994805260223102976/problems/994805305181847552 本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。 输入格式: 输入在一行中依次给出 A 和 B,中间以 1 空格分隔。 输出格式: 在一行中依次输出 Q 和 R,中间以 1 空格分隔。 输入样例 123456789050987654321 7 输出样例 17636684150141093474 3 我的理解 A为不超过1000位的正整数,不是不超过1000,是1000位。用string存储,B是一位正整数,short即可。好像是大整数的除法问题的简化,除数只有一位,循环遍历A,将A中的字符转化为数值进行计算,将每次的商转化为字符串拼接,每次的余数参与下一次的被除数。两点注意。 在循环遍历时,有可能会出现余数为0的情况,如果余数为0,则只有下一字符作为被除数,例如321 / 3,第一步的商为1,但是余数为0,下一步的被除数为2。 最终的商可能出现以0开始的字符串,例如123 / 2,按照这种逐步计算相除的方式,商最后为061,此时则需要将前面的0给去掉。 代码段 #include

蓝桥杯 BEGIN-4 入门训练 Fibonacci数列

我的梦境 提交于 2020-01-22 05:50:23
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为: ,其中 。 当n比较大时, 也非常大,现在我们想知道, 除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示 除以10007的余数。 说明:在本题中,答案是要求 除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出 的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000。 #include <stdio.h> int main() { int n; scanf("%d", &n); if (n == 1 || n == 2) printf("1"); else { int fn = 2, fn_1 = 1, fn_2 = 1; for (int i = 3; i <= n; ++i) { fn = (fn_1 + fn_2) % 10007; fn_2 = fn_1; fn_1 = fn; } printf("%d", fn); } return 0; } 来源: CSDN 作者: liulizhi1996 链接: https:/

20190313: 进制转换(未完待续)

狂风中的少年 提交于 2020-01-16 16:08:03
1、十进制转二进制、八进制、十六进制 十进制转二进制:将十进制数除以2,余数即为二进制数的低位,所得商继续除以2直到商为0为止,每一次的余数即为二进制数的低位到高位的数字。以十进制数150为例:150/2=75余0,75/2=37余1,37/2=18余1,18/2=9余0,9/2=4余1,4/2=2余0,2/2=1余0,1/2=0余1,因此十进制数150的二进制数为10010110。 十进制转八进制:将十进制数除以8,余数即为八进制数的低位,所得商继续除以8直到商为0为止,每一次的余数即为八进制数的低位到高位的数字。以十进制数150为例:150/8=18余6,18/8=2余4,2/8=1余2,因此十进制数150的八进制数为226。 十进制转十六进制:将十进制数除以16,余数即为十六进制数的低位,所得商继续除以16直到商为0为止,每一次的余数即为十进制数的低位到高位的数字,余数10-15分别字母A-F表示。以十进制数150为例:150/16=9余6,9/16=0余9,因此十进制数150的十六进制数为96。 2、二进制转十进制、八进制、十六进制 二进制转十进制:将二进制数的各位数与2的幂相乘求和。以二进制数10010110为例,? 二进制转八进制:将二进制数从低位到高位即从右到左每3位看做一个整体,计算其十进制数,所得即为八进制数。以二进制数10010110为例

进制转换

故事扮演 提交于 2020-01-14 01:38:27
NOIP 2000 进制转换 题目描述 t1.cpp/in/out 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以 该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如: 123可表示为 1*102+2*101+3*100这样的形式。 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数 字所处位置的(值-1)为指数,以2为底数的幂之和的形式。一般说来,任 何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数。如 果是以R或-R为基数,则需要用到的数码为 0,1,....R-1。例 如,当R=7时,所需用到的数码是0,1,2,3,4,5和6,这与其是 R或-R无关。如果作为基数的数绝对值超过10,则为了表示这些数码,通 常使用英文字母来表示那些大于9的数码。例如对16进制数来说,用A表示 10,用B表示11,用C表示12,用D表示13,用E表示14,用F表 示15。 在负进制数中是用-R 作为基数,例如-15(十进制)相当于110001 (-2进制),并且它可以被表示为2的幂级数的和数: 110001=1*(-2)5+1*(-2)4+0*(-2)3+0* (-2)2+ 0*(-2)1 +1*(-2)0 设计一个程序,读入一个十进制数和一个负进制数的基数 , 并将此十进制数转 换为此负进制下的数: -R ∈ {-2,-3,

C++多项式除法的探讨

大兔子大兔子 提交于 2020-01-13 08:45:21
最近的一项工作就是用vector实现多项式类,这个类需要完成多项式的数据结构的定义以及基本运算,包括加减乘除,前三个还比较容易,对于多项式的除法,因为有除不尽的情况,比如: 计算 其结果是: 明显是除不尽的,但是按照普通的除法去做,余数就会被舍弃,当涉及到求值或者求导时,就会产生极大的误差,尤其是在实现牛顿法求解高次多项式的数值解时,需要计算迭代点的函数值以及导数值,余数的舍弃必然使函数值产生偏差,其导数值也必然不准,也就使最后产生不靠谱的结果。 解决方案有两种思路,也是我自己的思考过程,第一种,我想通过指针的形式将多项式除法的结果和余数都返回,然后在计算函数值和导数值的时候,需要将余数和除数再次相除,这样做确实可以解决问题,但是,前提是需要将被除数,除数区分开,在单次除法的计算中问题不大,但是涉及到复杂函数构成时,就显得困难了。 所以产生了第二种解决方案,就是遇到除法,不去计算结果,而是构造一个结构体,这个结构体有两部分构成,一部分是被除数,一部分是除数,也就是变成分子分母的形式 template<typename T> struct Div_Poly { Poly<T> Numer_Poly; //分子--被除数 Poly<T> Denom_Poly;//分母--除数 } 在涉及除法时,就直接传值操作,而不进行实际的除法运算,求函数值时直接将函数值代入,求导数值时

多项式A除以B

筅森魡賤 提交于 2020-01-08 09:26:21
这个问题我是在PAT大区赛题里遇见的。题目如下: 多项式A除以B(25 分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下: N e[1] c[1] ... e[N] c[N] 其中 N 是该多项式非零项的个数, e[i] 是第 i 个非零项的指数, c[i] 是第 i 个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同的非负整数,所有系数是非零整数,所有整数在整型范围内。 输出格式: 分两行先后输出商和余,输出格式与输入格式相同,输出的系数保留小数点后1位。同行数字间以1个空格分隔,行首尾不得有多余空格。注意:零多项式是一个特殊多项式,对应输出为 0 0 0.0 。 但非零多项式不能输出零系数(包括舍入后为0.0)的项。在样例中,余多项式其实有常数项 -1/27 ,但因其舍入后为0.0,故不输出 。 输入样例: 4 4 1 2 -3 1 -1 0 -1 3 2 3 1 -2 0 1 输出样例: 3 2 0.3 1 0.2 0 -1.0 1 1 -3.1题目的意思很明确,就是要求 anxn+an-1xn-1+an-2xn-2+。。。+a1x1+a0x0 除以amxm+am-1xm-1+am-2xm-2+。