易截截图软件、单文件、免安装、纯绿色、仅160KB

更高效率的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面试题汇总

1、  int a=2,b=11,c=a+b++/a++; 则c值为多少?
【考点】编码规范。
表面上考察你对运算符优先级的掌握程度,但实际上优先级这些玩意很难死记硬背得住?大家的疑惑不就是运算符的结合顺序么?那么如何去避免呢?c=a+((b++)/(a++))不就行了么,其实问题背后考察的是你的编码规范,如何写清晰易懂的代码,如何在一个团 ......

UVa 327 Evaluating Simple C Expressions

/*
coder: ACboy
date: 2010-3-14
result: 1A
description: UVa 327 Evaluating Simple C Expressions
*/
#include <iostream>
#include <algorithm>
using namespace std;
struct Node {
char name;
int value;
int lastValue;
int pos;
};
int cmp(const Node & a, const Node &a ......

C变参函数的实现机制

C的变参问题与print函数的实现
我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int printf( const char* format, ...); 
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:
   printf("%d",i);
&nb ......

Python 使用C代码——swig

Ref : http://www.swig.org/translations/chinese/tutorial.html
假设你有一些c你想再加Python.。举例来说有这么一个文件example.c
 /* File : example.c */
 #include <time.h>
 double My_variable = 3.0;
 int fact(int n) {
     if (n <= 1) return 1;
&nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号