分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

/** n个数字形成的圆圈中循环删除第m个数字 - C++ - by Chimomo** 题目:n个数字(0, 1, … , n-1)形成一个圆圈。从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。* 当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。** Answer:* The keys are:*   1) If we shift the ids by k, namely, start from k instead of 0, we should add the result by k%n.*   2) After the first round, we start from (k+1)(possibly % n) with n-1 elements,*   that is equal to an (n-1) problem while start from (k+1)th element instead of 0,*   so the answer is (f(n-1,m)+(k+1))%n.*   3) Set k = m-1, so f(n,m) = (f(n-1,m)+m)%n. Obviously, f(1,m) = 0.*   Now this is an O(n) solution.*/#include <iostream>
#include <stdio.h>using namespace std;int f(int n, int m) {int fn = 0;for (int i = 2; i <= n; i++) {fn = (fn + m) % i;}return fn;
}int main(int argc, char *argv[]) {cout << f(100, 66) << endl;return 0;
}// Output:
/*
77*/

算法 - n个数字形成的圆圈中循环删除第m个数字(C++)相关推荐

  1. 算法 n个数字形成的圆圈中循环删除第m个数字 C++

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...

  2. 用1、2、3、4、5、6、7、8、9这9个数字,填入□ 中使等式□□×□□□ = □□□□ 成立,每个数字恰好只用一次。

    用1.2.3.4.5.6.7.8.9这9个数字,填入□ 中使等式□□×□□□ = □□□□ 成立,每个数字恰好只用一次. 以下是所有的7 个答案供参考: 12*483=5796 18*297=5346 ...

  3. JAVA中循环删除list中元素的方法总结

    原文:http://www.cnblogs.com/aspirant/p/7900854.html 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天 ...

  4. java 删除list元素_JAVA中循环删除list中元素的方法总结

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  5. java list 范围删除_JAVA中循环删除list中元素(移除list两时间范围外的元素)

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

  6. Java中循环删除list中元素的方法总结(总结)

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍 ...

  7. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)

    剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...

  8. JAVA中循环删除集合中元素的方法总结

    一.list集合循环删除元素 1.通过普通的for删除删除符合条件的多个元素 for(int i=0;i<list.size();i++){if(list.get(i).equals(" ...

  9. List中循环删除元素

    在Java中,因为List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除List中的某个元素. 但是在for循环中用remove()就不太行了 根据面向百度开发的经验, ...

最新文章

  1. Kali Linux***测试
  2. appearance 设置公共属性
  3. Linux入门:部署JavaWeb项目
  4. FATFS文件系统框架及源码分析
  5. DELPHI的DBGRID有两个难点
  6. HikariConfig配置详解
  7. hybris backoffice和产品主数据相关的一些sample data
  8. 前端学习(1986)vue之电商管理系统电商系统之建立新分支
  9. Ajax用证书调用,跨域的jQuery AJAX调用,带证书(Cross domain jQuery ajax call
  10. PTA编程总结3:抓老鼠
  11. NYOJ105 - 九的余数
  12. mybatis中useGeneratedKeys和keyProperty的作用
  13. 2017-3-17 SQL server 数据库 视图,事务,备份还原,分离附加
  14. 测试环境下将centos6.8升级到centos7的操作记录(转)
  15. 嵌入式Littlevgl之linux移植
  16. linux bind日志级别,Bind日志配置。
  17. 代码风格自动化(二)——husky + lint-staged
  18. Java线程池的四种创建方式
  19. 一款网课学习辅助软件
  20. Centos用mail命令登录163邮箱发邮件

热门文章

  1. linux磁盘分区什么意思,linux 磁盘分区详解
  2. C语言数组制作拼图游戏,C语言自制拼图游戏.doc
  3. 【字符串】Hash表
  4. xtrabackup备份恢复MySQL数据库
  5. new/delete与malloc/free的区别
  6. 熬夜刚完的注解与反射
  7. UG\NX二次开发 获取相切面的三种方法
  8. 财务部门服务器操作系统,中型企业如何选择财务系统服务器?
  9. 对于position定位的认识
  10. cpu利用率(cpu利用率突然100)