描述

n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。

游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n − m号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第 n-1 号位置上的小伙伴顺时针走到第m-1 号位置。

现在,一共进行了 10^k 轮,请问 x 号小伙伴最后走到了第几号位置。

格式

输入格式

输入共 1 行,包含 4 个整数 n、m、k、x,每两个整数之间用一个空格隔开。

输出格式

输出共 1 行,包含 1 个整数,表示 10^k 轮后 x 号小伙伴所在的位置编号。

样例1

样例输入1[复制]

10 3 4 5

样例输出1[复制]

5

解题报告

一拿到这道题,首先想到找规律,是一个循环,于是就想到先求出这个循环的位置序列,然后用10^k mod 一次循环的次数便是答案。但是只过了九组数据。

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,x,ci;
long k;
int wz[];
int main()
{
freopen("circle.in","r",stdin);
freopen("circle.out","w",stdout);
cin>>n>>m>>k>>x;
wz[]=x;
int b=x,t=;
do
{
t++;
b=b+m;
if (b>=n)
b=b%n;
wz[t]=b;
}while(b!=x);
int v=;
for(long i=;i<=k;i++)
{
if (v==) v=;
v=(v*)%t;
}
if (v==) cout<<wz[];
else cout<<wz[v];
return ;
}

后来,知道要用 快速幂 就全过了。。

复习一下

#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,x;
long long k;
int main()
{
freopen("circle.in","r",stdin);
freopen("circle.out","w",stdout);
cin>>n>>m>>k>>x;
long long t=,tmp=;
while(k>) //快速幂
{
if(k%)t=(t*tmp)%n; //是奇数 2^(i-1)*1
k=k>>;
tmp=(tmp*tmp)%n; //如 10^(2^2)=10^(2^1)*10^(2^1) 即tmp*tmp
}
x=(x+t*m)%n;
cout<<x;
return ;
}

掌握快速幂后,以后的幂的计算就快的多了

NOIP 2013提高组day 1 T 1转圈游戏 快速幂的更多相关文章

  1. NOIP 2013 提高组 day1 T2 火柴排队 归并 逆序对

    描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑i=1n(ai−bi)2∑i=1n(ai−bi) ...

  2. noip 2013 提高组 Day2 部分题解

    积木大赛: 之前没有仔细地想,然后就直接暴力一点(骗点分),去扫每一高度,连到一起的个数,于是2组超时 先把暴力程序贴上来(可以当对拍机) #include<iostream> #incl ...

  3. NOIP 2013 提高组 day2 积木大赛

      积木大赛 描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为1的积木组成,第

  4. noip 2013 提高组 day1

    1.转圈游戏: 解析部分略,快速幂就可以过 Code: #include<iostream> #include<fstream> using namespace std; if ...

  5. NOIP 2013 提高组 洛谷P1967 货车运输 (Kruskal重构树)

    题目: A 国有 nn 座城市,编号从 11 到 nn,城市之间有 mm 条双向道路.每一条道路对车辆都有重量限制,简称限重. 现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情 ...

  6. noip2013提高组day1第一题-转圈游戏——快速幂典型应用

    所谓的快速幂: // 计算 m^n % k 的快速幂算法 int quickpow(int m,int n,int k) { ; ) { ) b = (b*m)%k; n = n >> ; ...

  7. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...

  8. [NOIp 1998 提高组]Probelm 2 连接多位数【2011百度实习生笔试题】

    /*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...

  9. NOIP 2014 提高组 题解

    NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...

随机推荐

  1. 关于Socket的经验小结

    前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼 ...

  2. Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/37659905 一直用tomcat一段时间都正常无事,最近一次启动tomcat就发生以 ...

  3. 转:关于C++14:你需要知道的新特性

    关于C++14:你需要知道的新特性 遇见C++ Lambda C++14 lambda 教程 C++11 lambda表达式 C++标准库:使用 std::for_each std::generate ...

  4. OpenGL的几何变换4之内观察全景图

    上一次写了OpenGL的几何变换3之内观察全景图 上次采用的是图片分割化方式,这次采用数据分割化方式. 先说下思路,数据分割化方式呢,是只读取一张图片imgData,然后通过glTexCoord2f( ...

  5. 转!!Java学习之自动装箱和自动拆箱源码分析

    自动装箱(boxing)和自动拆箱(unboxing)   首先了解下Java的四类八种基本数据类型   基本类型 占用空间(Byte) 表示范围 包装器类型 boolean 1/8 true|fal ...

  6. request获取ip数据

    http://www.cnblogs.com/icerainsoft/p/3584532.html

  7. 清除数据库中大于10W行的垃圾历史数据

    -- =============================================-- Author: <Author,Name,龙鸿轩>-- Create date: &l ...

  8. 响应式web设计读书笔记

    1.媒体查询可以在链接link标签和具体的CSS中使用: 2.通过<link>标签的 media 属性为样式表指定设备类型和其他条件  中间用and和()来分隔,如下 <link r ...

  9. svn 大杂烩

    svn : trunk 日常开发 branch 多版开发,或者修复bug,测试 tag  开发到一阶段打一个tag,给外部使用 属性externals:可以引用外部的公共工程.这个工程最好是稳定的,不 ...

  10. 设置westorm自动代码提示

    打开settings 然后在js文件下 打出co  按TAB键就出现了color了