博客
关于我
sdnu1300.转圈游戏(快速幂+取模)
阅读量:273 次
发布时间:2019-03-01

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

为了解决这个问题,我们需要计算在10^k轮移动后,x号MM的位置。每一轮每个MM会移动m个位置,考虑到环形结构,我们需要使用模运算来高效计算位置。

方法思路

  • 问题分析:每个MM每轮移动m个位置,进行10^k轮后,总共移动的位置数为m * 10^k。由于位置是在环形结构中,我们需要计算这个总位置数对n取模的结果。
  • 快速幂计算:计算10^k mod n可以使用快速幂算法,这样即使k很大,也能在合理时间内完成。
  • 总位置计算:总的位置变化是x号MM的初始位置加上移动的总步数,再对n取模。
  • 解决代码

    #include 
    using namespace std;long long quick_pow(long long x, long long y, long long n) { long long ans = 1; while (y) { if (y % 2 == 1) { ans = (ans * x) % n; } x = (x * x) % n; y /= 2; } return ans;}int main() { long long n, m, k, x; while (scanf("%lld%lld%lld%lld", &n, &m, &k, &x) != EOF) { long long pow10 = quick_pow(10, k, n); long long total_move = (m * pow10) % n; long long result = (x + total_move) % n; cout << result << '\n'; } return 0;}

    代码解释

  • 快速幂函数quick_pow计算10^k mod n,使用快速幂算法来处理大数,确保计算高效。
  • 主函数:读取输入参数,计算10^k mod n,然后计算总移动步数,最后计算x号MM的位置并输出结果。
  • 模运算:在每一步计算中都使用模运算,避免数值溢出,保证计算正确性。
  • 这种方法确保了在处理大数时的效率和正确性,适用于题目中的各种输入情况。

    转载地址:http://csio.baihongyu.com/

    你可能感兴趣的文章
    Referenced classpath provider does not exist: org.maven.ide.eclipse.launchconfig
    查看>>
    Refactoring-Imporving the Design of Exsiting Code — 代码的坏味道
    查看>>
    PHP imap 远程命令执行漏洞复现(CVE-2018-19518)
    查看>>
    php include和require
    查看>>
    ref 和out 区别
    查看>>
    php JS 导出表格特殊处理
    查看>>
    php json dom解析
    查看>>
    ReentrantReadWriteLock读写锁解析
    查看>>
    php laravel实现依赖注入原理(反射机制)
    查看>>
    php laravel请求处理管道(装饰者模式)
    查看>>
    PHP mongoDB 操作
    查看>>
    ReentrantLock读写锁
    查看>>
    ReentrantLock的公平锁与非公平锁
    查看>>
    php mysql procedure获取多个结果集
    查看>>
    php mysql query 行数,PHP和MySQL:返回的行数
    查看>>
    php mysql session_php使用MySQL保存session会话
    查看>>
    PHP mysql_real_escape_string() 函数防SQL注入
    查看>>
    php mysql优化方法_MySQL优化常用方法
    查看>>
    PHP OAuth 2.0 Server
    查看>>
    php odbc驱动,php常用ODBC函数集(详细)
    查看>>