余数

51nod 1225 余数的和 数学

房东的猫 提交于 2020-04-08 06:53:05
1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n)。其中%表示Mod,也就是余数。 例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3。 给出n,计算F(n), 由于结果很大,输出Mod 1000000007的结果即可。 Input 输入1个数N(2 <= N <= 10^12)。 Output 输出F(n) Mod 1000000007的结果。 Input示例 6 Output示例 3思路:余数成等差;时间复杂度sqrt(n);   用等差数列求和的时候有个除法,所以用了下逆元; #include<iostream> #include<cstdio> #include<cmath> #include<string> #include<queue> #include<algorithm> #include<stack> #include<cstring> #include<vector> #include<list> #include<set> #include<map> using namespace

一致性Hash算法原理白话

拥有回忆 提交于 2020-04-05 23:18:05
1、技术背景 1.1、技术举例:Memcache 1.2、技术瓶颈 memcached服务器端本身不提供分布式cache的一致性,由客户端实现提供。以余数分布式算法为例。 余数分布式算法是根据添加进入缓存时key的hash值通过特定的算法得出余数,然后根据余数映射到关联的缓存服务器,将该key-value数据保存到该服务器 1.2.1、假设有3台缓存服务器以及它们对应的余数值 Node A:0,3,6,9 Node B:1,4,7 Node C:2,5,8 1.2.2、此时添加一台服务器Node D 服务器对应的余数值发生变化,如下 Node A:0,1,2 Node B:3,4 Node C:5,6 Node C:7,8,9 根据上面的变化,发现只有余数值为0,4,5所对应的缓存服务器没有发生改变,也就是说其它余数值对应的缓存服务器发生了改变,即缓存失效,如果大量缓存失效会严重影响系统的性能,也就是缓存动荡。针对这样大片缓存失效的技术瓶颈,于是提出了一致性hash算法。缩小失效缓存范围。 2、一致性Hash算法 2.1、将hash值范围看成一个0~2 32 的圆。 2.2、将服务器节点的hash值映射到该圆上。 2.3、对数据进行缓存时,计算key的hash值,然后找到该值在圆上的位置,顺时针进行查找,将数据保存到第一个查找到的服务器。 2.4、添加一个缓存服务器,如图

软件工程个人作业2

狂风中的少年 提交于 2020-03-16 17:27:12
1》题目要求: 可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求: 1、题目避免重复; 2、可定制(数量/打印方式); 3、可以控制下列参数: *是否有乘除法; *是否有括号(最多可以支持十个数参与计算); *数值范围; *加减有无负数; *除法有无余数! 2》设计思想: 这次编程主要是在上一次的基础之上,作进一步的要求,然后实现不同方式的输出。 1)题目避免重复的实现:先定义三个数组,然后再循环时将产生的运算符和两个运算数(随机产生的三个数)存入数组,每进行一次循环,就将数组中的数和前面的相比,如果两个运算符和运算数都和前面某一组数相等,那么重新产生一组随机数,实现避免重复。 2)可定制的实现:打印数量,就是输入一个数,然后进行该数次循环,然后输出。打印方式主要是可以在屏幕上输出,也可以实现输出到一个记事本文件中,这用到了输入输出流 的知识。 3)1.是否有乘除法,用if语句实现,如果有乘除法,则进一步选择是否有余数,我的程序是对有余数的选择直接输出,如果没有余数,就是被除数减去余数在输出。 2.数值范围:可以定义一个数s,用随机数rand()%s 就是产生1~s的随机数。 3.加减法无负数,就是保证后一个数比前一个数大,有负数,在其中加入负号。 ps:是否括号功能较难,暂时还未实现 源代码: //四则运算2 //2016 3 14 Sunzhe #include

入门训练——Fibonacci数列

拟墨画扇 提交于 2020-03-13 22:01:59
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为: Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 说明 :在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000。 #include<iostream> using namespace std; int fibo(int n) { if(n==1||n==2) return 1; else { return fibo(n-1)+fibo(n-2); } } int main() { int x; while(cin >> x) { cout << fibo(x)%10007 << endl; } return 0; } 用递归的方法来做发现超时了!!! 以递归求解的过程中会出现很多重复求解 如图: 思路 优化方法: 把已得到的数列保存起来,下次计算时先查询

基本类型:实型(浮点型)

早过忘川 提交于 2020-03-13 10:13:29
一、 概念 与数学中的实数的概念差不多,在一个值的后面加上一个小数点,该值就成为一个浮点值,C语言中浮点类型有float、double和long double; 二、书写形式 类似于科学记数法,称为指数记数法或E记数法,E后面的数字代表数10的指数 三、实型与整型的区别 整数没有小数部分,浮点数有小数部分,表示的具体数字的个数相同 浮点数可以表示的范围比整数大 在任意区间内,存在无穷多个实数,所以计算机的浮点数不能表示区间内的所有的值,表示不精确,可以试着打印输出123456789; 通常浮点数只是实际值的近似值,7.0可能存储为浮点值6.999999 四、浮点数在计算机内部的存储 float 与double 类型的数据在计算机内部的表示方式相同,都分为:符号位(最高位),指数部和尾数部,因所占存储空间不同,故所能够表示的数值范围和精度不同; 类型 符号位 指数部 尾数部 float 1(第31位) 8(第23~30位) 23(0~22) double 1(第63位) 11(第52~62位) 52(0~51) 十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。 用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。 然后把取出的整数部分按顺序排列起来

蓝桥杯 入门训练 Fibonacci数列 C语言

梦想与她 提交于 2020-03-11 01:07:27
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000。 自己写的,但是不对只有30分 # include <stdio.h> int main ( ) { int n = 1 ; int f1 = 1 , f2 = 1 , F = 1 ; int a = 0 ; int i = 1 ; scanf ( "%d" , & n ) ; if ( n > 0 && n <= 1000000 ) { if ( n == 1 && n == 2 ) F = 1 ; for ( i = 2 ; i < n ; i ++ ) { F = f2 + f1 ; f1 = f2 ; f2 = F ; } a = F %

求正/负余数

南笙酒味 提交于 2020-03-02 00:43:40
` 以下为程序运行结果示例: negative: -1 positive: 4 输入格式:无 输出格式: 负余数的输出格式:"negative: %d\n" 正余数的输出格式:"positive: %d\n" ```c #include <stdio.h> #include <stdlib.h> int main() { int a=-11,b=5,c; c=a%b; printf("negative: %d\n",c); printf("positive: %d\n",c+5); return 0; } ``我们可以直接通过暴力直接推出这个结果, 我的第二中求法通过数学函数,表示出绝对值,在进行计算 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int a=-11,b=5,c; c=a%b; printf("negative: %d\n",c); if (a<0&&c<0) c+=fabs(b); printf("positive: %d\n",c); return 0; } 注意调用数学函数。 来源: CSDN 作者: zm528630 链接: https://blog.csdn.net/zm528630/article/details/104599196

【蓝桥杯】Fibonacci数列衍生问题

拈花ヽ惹草 提交于 2020-02-15 08:42:28
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 # include <stdio.h> int main ( ) { int i ; long n ; scanf ( "%d" , & n ) ; int f [ n ] ; f [ 1 ] = 1 ; f [ 2 ] = 1 ; if ( n > 2 ) { for ( i = 3 ; i <= n ; i ++ ) f [ i ] = ( f [ i - 1 ] + f [ i - 2 ] ) % 10007 ; printf ( "%d" , f [ n ] ) ; } else if ( n == 1 || n == 2 ) printf ( "1" ) ; return 0 ; } 来源: CSDN 作者: swj_on_the_way 链接:

蓝桥杯练习——Fibonacci数列

℡╲_俬逩灬. 提交于 2020-02-14 07:27:18
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数。 说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000。 取余运算:(a + b) % p = (a % p + b % p) % p import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Scanner s = new Scanner ( System . in ) ; int n = s . nextInt ( ) ; int [ ] a = new int [ 1000000 ] ; a [ 0 ] = a [ 1 ] = 1 ; if ( n == 1 || n == 2 ) { System . out .

从零开始学java(12)

与世无争的帅哥 提交于 2020-02-11 23:38:25
Day2 今天了解一下一些常用的命令与基础知识,并且学会使用IDE(Integrated Development Environment集成开发环境),以eclipse为例。 1.DOS常见的命令 1 dir 无参数:查看当前所在目录的文件和文件夹。 /s:查看当前目录及其所有子目录的文件和文件夹。 /a:查看包括隐含文件的所有文件。 /ah:只显示出隐含文件。 /w:以紧凑方式(一行显示5个文件)显示文件和文件夹。 /p:以分页方式(显示一页之后会自动暂停)显示。 |more:前面那个符号是“\”上面的那个,叫做重定向符号,就是把一个命令的结果输出为另外一个命令的参数。more也是一个命令,dir /w |more 得到的结果和dir /w /p的结果是一样的。 其他的参数大家可以用:dir/?查看。 2 cd cd 目录名:进入特定的目录。如果看到有个目录显示为:abcdef ghi 就 输入:cd abcdef.ghi进入该目录。 cd\ 退回到根目录。 cd…退回到上一级目录。 3 md rd md 目录名:建立特定的文件夹。 (dos下面习惯叫目录,win下面习惯叫文件夹。) rd 目录名:删除特定的文件夹。 4 cls 清除屏幕。 清除屏幕上所有的显示内容,只留下CLS命令前的路径 5 copy copy 路径\文件名 路径\文件名 :把一个文件拷贝到另一个地方。 6