COGS 1437. [NOIP2013]转圈游戏 解题报告
2016-06-07 11:15
405 查看
COGS 1437.转圈游戏 解题报告
-----------------------------------------------------------------------------------------------------------Janis
1437. [NOIP2013]转圈游戏
★ 输入文件:CircleNOIP2013.in
输出文件:
CircleNOIP2013.out简单对比
时间限制:1 s 内存限制:128 MB
【题目描述】
【输入格式】
输入文件名改为:CircleNOIP2013.in
【输出格式】
输出文件名改为:CircleNOIP2013.out
【来源】
CCF全国信息学奥林匹克联赛 (NOIP2013)复赛Day1(水题,强行凑字数 233333333333333)
分析:
看到这题第一眼,首先应该想到是小学奥数题,有关取余数之类的知识。然后再看题目要求及数据范围(好大),得知是快速幂取模,然后就很简单了。
算法设计:
一次走m个人第x位应该是轮数*m%n+x。
快速幂是利用分治策略。
a*b%c=((a%c)*(b%c))%c
#include<cstdio><span style="white-space:pre"> </span>//From Janis #include<iostream> using namespace std; typedef long long ll; ll n,m,k,x; ll pow_n(ll p,ll k){//quick_pow p^k ll tmp=1; while(k){ if(k&1)tmp=(tmp*p)%n; p=((p%n)*(p%n))%n; k>>=1; } return tmp%n; } int main() { freopen("CircleNOIP2013.in","r",stdin); freopen("CircleNOIP2013.out","w",stdout); cin>>n>>m>>k>>x; ll tmp=pow_n(10,k); tmp*=m; tmp%=n; ll ans=tmp+x; ans%=n; cout<<ans; }
相关文章推荐
- android BroadcastReceiver 使用小结
- linux shell执行原理
- C# 监听HTTP请求
- [工具][windows][visualStudio][充电]番茄助手vaassist常见用法
- 交换两个变量值的方法
- Android按钮单击事件的四种常用写法总结
- Android Studio官方版DrawerLayout侧滑菜单解析
- Win7(64bit)搭建SVN
- EtherCAT主站协议接口
- javascript之Boolean类型对象
- window计划任务
- 四核驱动的三维导航—淘宝新UI(设计篇)
- Handler源码解析
- BYTE,WORD,DWORD的大小及一些特殊的"高低位宏"(取高位 取低位)
- 238. Product of Array Except Self
- Java多线程初探——守护线程
- java流介绍
- kohana的orm学习 插入数据
- Android自定义View实现左右滑动选择出生年份
- 解决Bash On Ubuntu On Window安装Zsh无效问题附安装说明