更高效率的A^B mod C
bird
#include <stdio.h>
#define LL unsigned long long int
inline LL mod(LL a,LL b)
{
while (a>=b)
a-=b;
return a;
}
//a*b mod c
inline LL MulAndMod(LL a, LL shl_b,LL c)
{
LL val,pre;
pre = mod(a,c);
val = 0;
while (shl_b)
{
if (shl_b&0x1)
val = mod(val + pre,c);
shl_b>>=1;
pre = mod(pre<<1,c);
}
return val;
}
inline LL A_BModC(LL a,LL shl_b,LL c)
{
LL val,pre;
if (shl_b&0x1) //根据2相应二进制位的值判断是否加A*2^n;\\因为有对b进行右移运算,所以每次只需判断最末位的结果就可以。
val = mod(a,c);
else
val = 1;
shl_b >>= 1; //计算 A*2^n的值。
pre = MulAndMod(a,a,c);
while (shl_b)
{
if (shl_b&0x1)
val = MulAndMod(val,pre,c);
shl_b>>=1;
pre = MulAndMod(pre,pre,c);
}
return val;
}
int main()
{
LL a,b,c;
while (scanf("%llu%llu%llu", &a,&b,&c)!=EOF)
printf("%llu\n", A_BModC(a,b,c));
return 0;
}
相关文档:
C的变参问题与print函数的实现
我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int printf( const char* format, ...);
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:
printf("%d",i);
&nb ......
可以将XML文件的树(只有一个顶层节点).于是理所当然的可以用树作为XML的一种存储结构.
我将在这里用C++实现对简单的XML文件的解析.
1.选择存储结构:
树型数据结构有多种存储方式,我将用"孩子兄弟表示法",定义如下:
typedef struct CSNode
{
int subNodes;
string data;
string name;
struct CSNode *fi ......
使用 C# 2.0 命令行编译器
http://msdn.microsoft.com/zh-cn/library/ms379563(vs.80).aspx#mainSection
摘要:本文分析了使用 C# 命令行编译器 csc.exe 生成应用程序的过程。同时,还将向读者介绍很多为 C# 2.0 独有的编译器选项,例如,extended/reference 标志和强名称支持。阅读完本文的内容之后,您将能够轻松地在没 ......
今天突然想到B/S结构里,webform是无法取得客户端的MAC地址和硬件信息的,就突发奇想,用C/S结构,但是因为C/S结构的很多的东西不能动态,就考虑到了C/B结构
最后决定用webservice+ALC+C/B结构 ,搭建我的OA系统
努力ing ......
背景
项目的
自动化测试中已经使用了基于Python
脚本的框架,自动化过程中最关键的问题就是如何实现桩模块。运用
Python
强大的功能,实现任何桩模块都是可能的,但是是否必须完全使用
Python
实现模块逻辑,成本是一个决定性因素。在桩模块逻辑简单的情况下,使用
Python
模拟模块逻辑不但使自动化测试的结构清 ......