文章目录

  • 进制
    • 十进制转二进制
      • (1)短除法
      • (2)贪心算法
    • 二进制转十进制
    • b进制转十进制
    • 十进制转b进制
  • 快速幂
    • 例题1:越狱
    • 例题2:倒水

ε=(´ο`*)))唉,又快学完初等数论了,我又心血来潮,再次写下一篇壮美的篇章。

一夜复习两茫茫。看一句,忘三行。路遇友人,脸色皆凄凉。视死如归入考场,做小抄,占座忙。考完之后心凉凉,左右曰,今必亡。查询成绩,众人皆过我独亡。再顾昔时左右人,这一群,装逼郎。———题记一夜复习两茫茫。\\看一句,忘三行。\\路遇友人,脸色皆凄凉。\\视死如归入考场,做小抄,占座忙。\\ 考完之后心凉凉,左右曰,今必亡。\\查询成绩,众人皆过我独亡。\\再顾昔时左右人,这一群,装逼郎。\\———题记一夜复习两茫茫。看一句,忘三行。路遇友人,脸色皆凄凉。视死如归入考场,做小抄,占座忙。考完之后心凉凉,左右曰,今必亡。查询成绩,众人皆过我独亡。再顾昔时左右人,这一群,装逼郎。———题记


进制

略带而过

十进制转二进制

(1)短除法

(2)贪心算法

二进制转十进制

N(十进制)=an∗2n+an−1∗2n−1+……+a1∗21+a0∗20N(十进制)=a_n*2^n+a_{n-1}*2^{n-1}+……+a_1*2^1+a_0*2^0N(十进制)=an​∗2n+an−1​∗2n−1+……+a1​∗21+a0​∗20

b进制转十进制

乘以基数并展开:
x=an∗bn+an−1∗bn−1+……+a1∗b1+a0∗b0x=a_n*b^n+a_{n-1}*b^{n-1}+……+a_1*b^1+a_0*b^0x=an​∗bn+an−1​∗bn−1+……+a1​∗b1+a0​∗b0
x=(…(an∗b+an−1)∗b+…)∗b+a0x=(…(a_n*b+a_{n-1})*b+…)*b+a_0x=(…(an​∗b+an−1​)∗b+…)∗b+a0​

十进制转b进制

快速幂

快速幂,顾名思义,就是快速计算某个数的多少次幂,其时间复杂度为Θ(log⁡2x)\Theta(\log_2 x)Θ(log2​x)。

预备知识

原理倍增思想
a∗a=a2a22=a4a42=a8a*a=a^2\\{a^2}^2=a^4\\{a^4}^2=a^8a∗a=a2a22=a4a42=a8

【核心代码】

int pow(int a,int b,int p)//快速幂求a^b%p
{int res=1;for(;b;b>>=1){if(b&1) res=(ll)res*a%p;a=(ll)a*a%p; }return res;
}

例题1:越狱

【题目描述】
监狱有连续编号为1..n1..n1..n的nnn个房间,每个房间关押一个犯人。有mmm种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人信仰的宗教相同,就可能发生越狱。求有多少种状态可能发生越狱,结果模100003100003100003取余。1≤m≤108,1≤n≤1012。1≤m≤10^8,1≤n≤10^{12}。1≤m≤108,1≤n≤1012。
【解析】
发生越狱的情况下不太好分析,所以我们可以先算出总方案数再减去不发生越狱的情况。
显然,所有的方案数为 mnm^nmn ,所有不发生越狱的方案数为 m∗(m−1)(n−1)m*(m-1)^{(n-1)}m∗(m−1)(n−1) 。
所以,发生越狱的方案数为 mn−m∗(m−1)(n−1)m^n-m*(m-1)^{(n-1)}mn−m∗(m−1)(n−1) 。
用快速幂即可完成。
【代码展示】

#include<bits/stdc++.h>
#define ud using namespace std
#define ll long long
ud;
ll m,n;
inline long long read()
{long long sum=0,flag=1;char c;for(;c<'0'||c>'9';c=getchar())if(c=='-') flag=-1;for(;c>='0'&&c<='9';c=getchar())sum=(sum<<1)+(sum<<3)+c-'0';return sum*flag;
}
ll pow(ll a,ll b)
{ll tmp=1;while(b!=0){if(b%2==1){tmp*=a;tmp%=100003;}b=b/2;a*=a;a%=100003;}return tmp;
}
int main()
{m=read();n=read();ll ans=m*1LL*(pow(m,n-1)-pow(m-1,n-1)+100003)%100003;//多加一个100003起到保险作用printf("%lld\n",ans);return 0;
}

例题2:倒水

【题目描述】
一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子。每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把空瓶丢弃。(不能丢弃有水的瓶子) 显然在某些情况下CC无法达到目标,比如N=3,K=1。此时CC会重新买一些新的瓶子(新瓶子容量无限,开始时有1升水),以到达目标。 现在CC想知道,最少需要买多少新瓶子才能达到目标呢?1<=N<=109,K<=10001<=N<=10^9,K<=10001<=N<=109,K<=1000 。
【解析】
显然,由题意我们可以得到,保留瓶子的水容量一定为 2n(n∈N∗)2^n(n\in N^*)2n(n∈N∗) ,那么题目就可以转化为求 NNN 的二进制形式中从高位到低位保留 KKK 位 111 ,所需要补充的最小差值。

【初等数论】个人数论总结相关推荐

  1. 【更新完毕】《算法竞赛中的初等数论》(ACM / OI / MO)前言、后记、目录索引(十五万字符的数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 <算法竞赛中的初等数论>的全部内容的 Portable Document Format 版 ...

  2. 数学各个分支(借花献佛)——数论,拓扑,射影几何,常微分方程,非欧几何

    文章目录 前言 1. 数论 1.1数论的发展 1.2数论的分支 2. 拓扑学 2.1 拓扑学的由来 2.2 什么是拓扑学 3. 射影几何 3.1 射影几何的发展 3.2 射影几何的内容 3.3 mar ...

  3. 数据结构和算法 数论 概述

    1.数论概述 算法导论说:"数论曾经被视为一种虽然优美但却没什么用处的纯数学学科.如今,数论算法已经得到了广泛的使用.这很大程度上要归功于人们发明了基于大素数的加密方法.快速计算大素数的算法 ...

  4. 数学各个研究方向简介

    1. 数论 人类从学会计数开始就一直和自然数打交道了,后来由于实践的需要,数的概念进一步扩充,自然数被叫做正整数,而把它们的相反数叫做负整数,介于正整数和负整数中间的中性数叫做0.它们和起来叫做整数. ...

  5. 最全数学各个分支简介

    来源:算法数学俱乐部 编辑 ∑Gemini 数论 人类从学会计数开始就一直和自然数打交道了,后来由于实践的需要,数的概念进一步扩充,自然数被叫做正整数,而把它们的相反数叫做负整数,介于正整数和负整数中 ...

  6. 哥德巴赫猜想的证明(李扩继)

    哥德巴赫猜想是一个纯数学命题,是偶数的分类问题.偶数=奇合数+奇合数=奇合数+素数=素数+素数.本来没有问题的事,可在数学领域里,总要把每一个命题是真的还是假的要判断清楚,德国的一个中学数学教师哥德巴 ...

  7. 算法与数学之美:最全数学各个分支简介

    数论 人类从学会计数开始就一直和自然数打交道了,后来由于实践的需要,数的概念进一步扩充,自然数被叫做正整数,而把它们的相反数叫做负整数,介于正整数和负整数中间的中性数叫做0.它们和起来叫做整数. 对于 ...

  8. [转载]数学各个研究方向简介

     数论 人类从学会计数开始就一直和自然数打交道了,后来由于实践的需要,数的概念进一步 扩充,自然数被叫做正整数,而把它们的相反数叫做负整数,介于正整数和负整数中间的 中性数叫做0.它们和起来叫做整数. ...

  9. 《算法竞赛中的初等数论》(五)正文 0x50筛法(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  10. 《算法竞赛中的初等数论》(四)正文 0x40反演(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

最新文章

  1. Docker-compose 常用命令及网络设置(五)
  2. android view退出动画,android animation——view进来退出动画
  3. 爬虫.之登陆及动态网页的抓取
  4. Docker容器学习梳理-容器时间跟宿主机时间同步
  5. sqlyog怎么设置默认值_如何使用SQLyog
  6. java object 判断null_java判断object为null
  7. 《大道至简》第一章读后感(java伪代码)
  8. 放置江湖html5源码,「放置江湖」——经典文字类放置武侠手游
  9. 运维学习部分基础知识概括
  10. java解析json list
  11. 7-154 置点不动产——认真学习,努力工作买买房子吧
  12. xcode安装ipa包
  13. Gogs搭建教程-极易搭建的自助 Git 服务
  14. 如何合理的设计系统容量?
  15. PDF 中图片的提取
  16. 赛微微电启动上市发行:生产依赖外协加工厂商,市盈率偏高
  17. android认证失败怎么办,小米VIP认证失败怎么办
  18. Windows Server 2012R2配置分层存储,实现廉价的桌面云存储方案
  19. locationManager.getLastKnownLocation(locationProvider);//地理位置获取为null的解决方案
  20. 奥地利博士联培申请签证经验(奥地利签证)

热门文章

  1. C55X McBSP
  2. Vue 设置背景图片样式
  3. 您电脑上可能没有安装JRE插件或者该插件已被浏览器拦截,如果您确认没有安装JRE插件,请单击“确定“,页面将跳转到插件下载地址
  4. ENSP网络综合实验
  5. 大厂php笔试题,【大厂必备】2020超经典PHP面试题
  6. 八、JDBC批量处理sql语句
  7. linux 网卡virbr0,Linux网络配置
  8. vue-video-player 拖动进度条触发暂停移动端展示倍速菜单
  9. django多任务开启rabbitmq,并进行声明队列、发送、阻塞监听消息
  10. C++ 整型转16进制字符串或16进制字符串转整型