博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDUT2165:Crack Mathmen(快速幂)
阅读量:5281 次
发布时间:2019-06-14

本文共 1442 字,大约阅读时间需要 4 分钟。

题目:

快速幂。

#include 
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3ftypedef long long ll;using namespace std;int tt,n,cn[110];int qq[100010],we;struct node{ int w,id;}q[110];#define mod 997int er(int lf,int rf,int key){ int l=lf,mid; int r=rf; while(l<=r) { mid = l+(r-l)/2; if(q[mid].w==key) return mid; else if(q[mid].w>key) { r=mid-1; } else { l=mid+1; } } return -1;}int cmp(const void *a,const void *b){ struct node *aa=(struct node *)a; struct node *bb=(struct node *)b; return aa->w-bb->w;}int mult_mod(int a,int b)//计算 (a*b)%c.{ a%=mod;// 利用二分思想减少相乘的时间 b%=mod; ll ret=0; while(b) { if(b&1) { ret+=a; ret%=mod; } a<<=1; if(a>=mod) a%=mod; b>>=1; } return ret;}int pow_mod(int x,int n)//x^n%n{ if(n==1) return x%mod; x%=mod; int tmp=x; int ret=1; while(n) { if(n&1) ret=mult_mod(ret,tmp); tmp=mult_mod(tmp,tmp); n>>=1; } return ret;}void init(){ memset(cn,0,sizeof(cn)); tt=0; for(int i=48;i<=57;i++) { q[tt].id=i; q[tt++].w=pow_mod(i,n); } for(int i=65;i<=90;i++) { q[tt].id=i; q[tt++].w=pow_mod(i,n); } for(int i=97;i<=122;i++) { q[tt].id=i; q[tt++].w=pow_mod(i,n); } qsort(q,tt,sizeof(q[0]),cmp); cn[0]=1; for(int i=1;i
1) { printf("No Solution\n"); FF=false; break; } else { qq[we++]=q[t].id; } } if(FF) { for(int i=0;i

 

转载于:https://www.cnblogs.com/zhangmingcheng/p/4396374.html

你可能感兴趣的文章
Mybatis分页插件
查看>>
初学者编程实战指南 (2)- 避免逻辑的重复
查看>>
java技术基础
查看>>
QA系统Match-LSTM代码研读
查看>>
typedef与define宏定义用于声明新的类型之间的区别
查看>>
idea前后端分离搭建 JavaWeb项目
查看>>
python学习笔记 day44 mysql练习题(三)
查看>>
c# 使用ICSharpCode.SharpZipLib.dll实现文件压缩并返回
查看>>
【Laravel】 常用的artisan命令
查看>>
Qt 中获取本机IP地址
查看>>
基本数据类型(int, bool, str)
查看>>
070102_赌博设计:概率的基本概念,古典概型
查看>>
IT人生的价值和意义 感觉真的有了
查看>>
Linux命令之df
查看>>
BaseActivity--上门啦
查看>>
JS DOM对象
查看>>
python正则表达式
查看>>
OGR – Merging Multiple SHP files
查看>>
滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(10月17日~10月23日)...
查看>>
创业公司该不该被收购?(转)
查看>>