信息学奥赛一本通(1234:2011)
1234:2011
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 7002 通过数: 2979
【题目描述】
已知长度最大为200位的正整数n,请求出2011^n的后四位。
【输入】
第一行为一个正整数k,代表有k组数据(k≤200),接下来的k行,每行都有一个正整数n,n的位数≤200。
【输出】
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0。
【输入样例】
3 5 28 792
【输出样例】
1051 81 5521
【分析】
依题意,求2011^n的后四位。后四位显然是模10000。2011^n%10000,可以直接套用蒙哥马利幂取模模板。
模板1:蒙哥马利幂取模(非递归)
幂取模 a^b mod n 非递归
long long mod_exp(long long a,long long b,long long n)
{long long res=1;while(b){if(b&1)res=res*a%n;a=a*a%n; // 反复平方b>>=1; // 2分求幂}return res;
}
模板很好理解,用到的就是反复平方法和二分求幂法,例如:求(2^100)%10的最后一位是多少?
(2^100)%10 = (4^50)%10 = (16^25)%10 = (16%10)^25%10 = (6^25)%10 = (6*6^24)%10 = (6*36^12)%10 = ... = 6。
模板2:蒙哥马利幂取模(递归1)
幂取模 m^n mod p 递归1
long long mod_exp(long long m,long long n,long long p)
{long long t;if(n==1)return m%p;t=mod_exp(m,n/2,p)%p;t=t*t%p;if(!(n&1)) // 等价 if(n%2==0)return t;elsereturn m*t%p;
}
模板3:蒙哥马利幂取模(递归2)
幂取模 m^n mod p 递归2
long long mod_exp(long long m,long long n,long long p)
{long long t;if(n==1)return m%p;if(n%2==0)return mod_exp( (m*m)%p , n/2 , p);elsereturn m*mod_exp(m%p, n-1, p)%p;
}
【参考代码】
#include<stdio.h>
#include<string.h>
#define MAXN 210char s[MAXN];//蒙哥马利幂取模非递归模板
long long quickpow(long long a,long long b,long long n) // a^b mod n
{long long res=1;while(b) //2分求幂法 {if(b & 1)res=res*a%n;a=(a*a)%n; //反复平方法 b>>=1;}return res;
}
int main()
{int i,k,len,n;scanf("%d",&k);getchar();while(k--){gets(s);n=0;len=strlen(s);n=s[len-1]-'0';if(len>=2)n+=(s[len-2]-'0')*10;if(len>=3)n+=(s[len-3]-'0')*100;if(len>=4)n+=(s[len-4]-'0')*1000;n%=500;printf("%lld\n",quickpow(2011,n,10000));}return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1234
信息学奥赛一本通(1234:2011)相关推荐
- 信息学奥赛一本通 1234:2011(evd)
[题目描述] 已知长度最大为200位的正整数n,请求出2011n的后四位. [输入] 第一行为一个正整数k,代表有k组数据(k≤200),接下来的k行,每行都有一个正整数n,n的位数≤200. [输出 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通在线提交地址
信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
- 《信息学奥赛一本通 提高篇》
提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1章 贪心算法_青少年趣味编程-CSDN博客 提高篇 第一部分 基础算法 第1章 贪心算法 提高篇 第一部分 基础算法 第1 ...
- 信息学奥赛一本通 提高篇 第一部分 基础算法 第2章 二分与三分
信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分 信息学奥赛一本通 提高篇 提高版 第一部分 基础算法 第2章 二分与三分_mrcrack的博客-CSDN博客_信息学奥赛一本通 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
最新文章
- Love = Accounting
- linux 再多的running也挡不住锁
- 技术分享|明源云天际集成开放平台接口中心基于IdentityServer4的鉴权机制
- NYOJ 6 喷水装置(一)
- WindowProc和DefWindowProc的区别
- [剑指offer][JAVA]面试题第[22]题[j剑指offer][双指针][快慢指针]
- java中的udp丢包_UDP丢包问题
- 能用机器完成的,千万别堆工作量|持续集成中的性能自动化测试
- The .NET Core runtime can be found at:(Windows)
- 笔记《鸟哥的Linux私房菜》6 Linux的档案权限与目录配置
- C语言:32个关键字
- shell 小米system锁adb_小米/红米系列手机解system分区锁方法详解
- 如何获取淘宝APP原数据现场教学
- const注意点(对象赋值)
- python自然语言处理 分词_Python 自然语言处理(基于jieba分词和NLTK)
- TCP BBR的startup bbr_high_gain为什么是2/ln2?
- vue——echarts更换主题
- Unity3d 技巧(1)-摄像机层级设置
- 【Vue.js】Vue.js组件库Element中的图片、回到顶部、无限滚动和抽屉
- redhat linux 6.4,redhat linux 6.4 运行 runcluvfy 错误一例
热门文章
- LwIP移植到FreeRTOS(STM32F107+DP83848)
- 电信业务分类目录_第五大运营商!中信网络获基础电信业务牌照
- IDEA 2021.3 重磅发布!远程开发 (Beta) 、机器学习、故障自检、体验优化......
- 推荐两款工具给爱做实验的人
- Java 数组转 List 的三种方式及对比
- 复刻了一个史上最强 Redis 6.0 版本
- NullPointerException的处理新方式,Java14真的太香了
- 为什么我墙裂建议大家使用枚举来实现单例。
- 资深架构专家讲解微服务治理的架构演进
- 【C#学习笔记】函数调用