大整数取模(秦九韶算法)

//大整数取模,利用秦九韶算法

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define N 10000

int main()

{

char str[N];

int len;int i;int mod;

long long ans=0;

scanf("%s",str);

getchar();

scanf("%d",&mod);

len=strlen(str);

for(i=0;i<len;i++)

ans=(ans*10+str[i])%mod;

ans=(int)ans;

printf("%d\n",ans);

system("pause"); 

return 0;

}

 

 

 

时间: 2024-10-28 07:25:02

大整数取模(秦九韶算法)的相关文章

C#基于大整数类的RSA算法实现(公钥加密解密,私钥加密解密)

最近因为项目需要通过RSA加密来保证客户端与服务端的通信安全.但是C#自 带的RSA算法类RSACryptoServiceProvider只支持公钥加密私钥解密,即数字证 书的使用. 所以参考了一些网上的资料写了一个RSA的算法实现.算法实 现是基于网上提供的一个大整数类. 一.密钥管理 取得密钥主要 是通过2种方式 一种是通过RSACryptoServiceProvider取得: /// <summary> /// RSA算法对象,此处主要用于获取密钥对 /// </summary&g

大整数的排序算法-C++大整数运算 利用已有的大整数怎么实现三个运算

问题描述 C++大整数运算 利用已有的大整数怎么实现三个运算 我有以下的C++代码,请问我该如何实现以下三个运算?如果我在定义大整数的类中定义三个友元函数,能否直接使用我定义的"运算符重载"?a) 求出100以内的数的阶乘:b) 一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数.当N=4时,1634满足条件,因为1^4 + 6^4 + 3^4 + 4^4 = 1634(其中"^"表示乘方),求N=21时,所有满足条件的花朵数.

快速幂取模算法

所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余).在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快.计算范围更大的算法,产生了快速幂取模算法.我们先从简单的例子入手:求abmodc 算法1.直接设计这个算法: int ans = 1; for(int i = 1;i<=b;i++) { ans = ans * a; } ans = ans % c; 缺点:这个算法存在着明显的问题,如果a和b过大,很容易就会溢出. 我们先来看看第一个改进方案:在讲

大数取模问题求大神审查!

问题描述 大数取模问题求大神审查! #include int mod(int aint nint m);int main(){ unsigned int abm; while(scanf(""%d%d%d""&a&b&m)!=EOF) printf(""%dn""mod(abm)); return 0;}int mod(int aint nint m){ if(n==1) return a; else

C语言快速幂取模算法小结_C 语言

本文实例汇总了C语言实现的快速幂取模算法,是比较常见的算法.分享给大家供大家参考之用.具体如下: 首先,所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余).在程序设计过程中,经常要去求一些大数对于某个数的余数,为了得到更快.计算范围更大的算法,产生了快速幂取模算法.我们先从简单的例子入手:求abmodc 算法1.直接设计这个算法: int ans = 1; for(int i = 1;i<=b;i++) { ans = ans * a; } ans = ans %

C++快速幂与大数取模算法示例_C 语言

一.快速幂 其实就是求(a^b)% p ,(其中a,b,p都比较大在int范围内)这类问题. 首先要知道取余的公式: (a*b)%p=(a%p*b%p)%p . 那么幂不就是乘机的累积吗,由此给出代码: int fast(int a,int b,int p) { long long a1=a,t=1; while(b>0) { if(b&1) /如果幂b是奇数多乘一次,因为后边会除2变偶数,(7/2=3) t=(t%p)*(a1%p)%p; a1=(a1%p)*(a1%p)%p; b/=2;

“大整数阶乘”问题的递推算法

/* 标题:<<系统设计师>>应试编程实例-[递推算法程序设计] 作者:成晓旭 时间:2002年09月11日(11:52:00-16:26:00) 实现递推算法的大整数阶乘处理函数 时间:2002年09月16日(18:38:00-20:02:00) 实现"斐波那契数列"问题的递推算法函数 */ //:============================"大整数阶乘"问题的递推算法=========================== #d

算法---大整数相加

原文:算法---大整数相加 开通博客开始第一次写发表算法博客.深知一半算法考试都是用C,C++,由于大四开始到今年毕业工作到现在一直从事C#开发,C++用得很少了.链表,指针也只知道一个概念了.用得没以前熟练了.所以后续更新的算法题我都是基于C#语法的.算法主要体现的是解题思路.跟题目一样,本次算法主要实现大数据相加.      解题思路:         1. 将大数据存储到一个链表中,C#中用List<int>来存储,每个节点表示每一位的数字. {1,2,3,4,5} =>12345

取模运算-求大神解答关于大数幂的运算和去模运算,谢谢!!c语言

问题描述 求大神解答关于大数幂的运算和去模运算,谢谢!!c语言 RT 比如说,2的10000000次方,我用double倒是可以算,但是如何去模呢... 2的10000000次方对1234567取模... 谢谢大神们! 解决方案 我记得以前在蓝桥杯上做过这样的题,你可以使用一个for循环进行计算,然后在每次计算以后就用得数对1234567取模,然后再使用取模后的数继续进行 运算,这样就不会溢出了. 解决方案二: 快速幂取模,对数时间. //求a的b次方对x取余数 int powmod(int a